请问python的浮点数最多能到小数点后多少位
请问python的浮点数最多能到小数点后多少位 16 ~ 17 位>>> 1.11111111111111111111.1111111111111112
>>> 1.111111111111111111111111111111111111
1.1111111111111112
本帖最后由 jackz007 于 2022-11-8 15:17 编辑
浮点数的点是可以浮动的(科学计数法),所以,一般不讨论最多能到小数点后多少位,而是有多少个有效数位。有效数位的大小只与浮点数所采用的 IEEE754 编码算法相关,与 Python 无关,分单精度和双精度浮点有所不同,从理论上那个说,单精度只能保证 7 位有效数字精度,而双精度也只能保证 15 位有效数字精度。什么意思?如果把一个 100 位的整型数转化为浮点数,那么,只有前面的15个数字一定是正确的,至于后面,那就只能作为参考了。
>>> x = 1234567890 ** 20
>>> x
67654944698652654984024168126592336587389088632301444555055192431380155244466533667477942075540289377153883353126488114832802578880956470654664413456344497903320100000000000000000000
>>> s = "%.30f" % float(x)
>>> print(s)
67654944698652654027241723628626385494795909504071476962713259650032748793953988299057243106548303395854908175767358515918013760367926160945349413202329298147722338388143158220292096.000000000000000000000000000000
>>>
可见,两种表达只有开头的 67654944698652654 是完全一样的,可见,浮点数的精度非常有限。
页:
[1]