3 回答

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
對(duì)于2.6+和3.x中的Python版本
您可以使用該str.format方法。例子:
>>> print('{0:.16f}'.format(1.6))
1.6000000000000001
>>> print('{0:.15f}'.format(1.6))
1.600000000000000
注意1,第一個(gè)示例末尾的是舍入誤差;之所以會(huì)發(fā)生這種情況,是因?yàn)榫_表示十進(jìn)制數(shù)1.6要求使用無限個(gè)二進(jìn)制數(shù)字。由于浮點(diǎn)數(shù)的位數(shù)是有限的,因此該數(shù)字將四舍五入為一個(gè)相鄰的值,但不相等。
對(duì)于2.6之前的Python版本(至少回到2.0)
您可以使用“模格式”語法(這也適用于Python 2.6和2.7):
>>> print '%.16f' % 1.6
1.6000000000000001
>>> print '%.15f' % 1.6
1.600000000000000

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
我想這實(shí)際上是將其放入字符串中,但這避免了舍入錯(cuò)誤:
import decimal
def display(x):
digits = 15
temp = str(decimal.Decimal(str(x) + '0' * digits))
return temp[:temp.find('.') + digits + 1]
添加回答
舉報(bào)