Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 设置函数焊盘的格式不一致_Python - Fatal编程技术网

Python 设置函数焊盘的格式不一致

Python 设置函数焊盘的格式不一致,python,Python,16点精度后,格式功能无法正常工作 >>> '{0:.17}'.format(0.10555584) '0.10555584' >>> '{0:.17}'.format(0.10555584124567896) '0.10555584124567896' >>> '{0:.26}'.format(0.10555584124567896) '0.10555584124567896076030138' >>> '{0:.18}'

16点精度后,格式功能无法正常工作

>>> '{0:.17}'.format(0.10555584)
'0.10555584'
>>> '{0:.17}'.format(0.10555584124567896)
'0.10555584124567896'
>>> '{0:.26}'.format(0.10555584124567896)
'0.10555584124567896076030138'
>>> '{0:.18}'.format(0.10555584124567896)
'0.105555841245678961'
>>> '{0:.18}'.format(0.10555584124567896)
'0.105555841245678961'
>>> '{0:.18}'.format(0.10555584124567)
'0.105555841245669996'
>>> '{0:.18}'.format(0.10)
'0.100000000000000006'
>>> '{0:.17}'.format(0.10)
'0.10000000000000001'
>>> '{0:.16}'.format(0.10)
'0.1'
>>> '{0:.15}'.format(0.10)
'0.1'
>>> '{0:.17}'.format(0.12345678901234567)
'0.12345678901234566'
>>> '{0:.17}'.format(0.1234567890123456)
'0.12345678901234559'
>>> '{0:.17}'.format(0.123456789012345678)
'0.12345678901234568'
>>> '{0:.17}'.format(0.12345678901234567)
'0.12345678901234566'

是否有任何解决方法或其他方法可以提高精度。

这不是格式问题,而是浮点数表示的问题。当前所有计算机都使用双精度64位浮点,精度约为16位

确实有办法处理任意精度的十进制数。这就是本模块的目的:

>>> import decimal
>>> d = decimal.Decimal('0.12345678901234567890123456789')
>>> d
Decimal('0.12345678901234567890123456789')
>>> '{0:.17}'.format(d)
'0.12345678901234568'
>>> '{0:.26}'.format(d)
'0.12345678901234567890123457'
>>> str(d)
'0.12345678901234567890123456789'

我认为,它实际上工作正常。有些整数不能用二进制表示,因此当你试图格式化大于其数字大小的数字时,它实际上会显示剩余部分。这是浮点的经典问题,你会惊讶地发现0.1+0.2==0.3是假的,而round1.5==round2.5是真的。通过使用库十进制,可以绕过所有语言都存在的这个问题。或者,如果您想比较python 3.5以来的两个浮点值,可以使用math.isclose。