打印浮点数到n个小数位,包括尾随0

我需要打印或将浮点数转换为15个小数位字符串,即使结果中有许多尾随0,例如:


1.6变成1.6000000000000000


我尝试了round(6.2,15),但它返回6.2000000000000002添加了舍入错误


我还在线上看到各种各样的人,他们将浮点数放入字符串中,然后手动添加尾随0,但这似乎很糟糕。


做这个的最好方式是什么?


慕慕森
浏览 441回答 3
3回答

互换的青春

对于2.6+和3.x中的Python版本您可以使用该str.format方法。例子:>>> print('{0:.16f}'.format(1.6))1.6000000000000001>>> print('{0:.15f}'.format(1.6))1.600000000000000注意1,第一个示例末尾的是舍入误差;之所以会发生这种情况,是因为精确表示十进制数1.6要求使用无限个二进制数字。由于浮点数的位数是有限的,因此该数字将四舍五入为一个相邻的值,但不相等。对于2.6之前的Python版本(至少回到2.0)您可以使用“模格式”语法(这也适用于Python 2.6和2.7):>>> print '%.16f' % 1.61.6000000000000001>>> print '%.15f' % 1.61.600000000000000

人到中年有点甜

我想这实际上是将其放入字符串中,但这避免了舍入错误:import decimaldef display(x):    digits = 15    temp = str(decimal.Decimal(str(x) + '0' * digits))    return temp[:temp.find('.') + digits + 1]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python