4
雖然與蟒蛇玩,我碰到這樣的:Python的INT浮動四捨五入
a = 1/(2.2 - 2)
print a #prints out 5.0
print int(a) #prints out 4
我懷疑問題有表達1/3是與二進制數表示(1/5表示二進制無異以十進制表示)。有人可以澄清這一點嗎?
雖然與蟒蛇玩,我碰到這樣的:Python的INT浮動四捨五入
a = 1/(2.2 - 2)
print a #prints out 5.0
print int(a) #prints out 4
我懷疑問題有表達1/3是與二進制數表示(1/5表示二進制無異以十進制表示)。有人可以澄清這一點嗎?
你對你的懷疑是完全正確的。根本原因是2.2不能精確表示爲float
:從這個
In [38]: '%.20f' % 2.2
Out[38]: '2.20000000000000017764'
其餘如下:
In [45]: '%.20f' % (2.2 - 2)
Out[45]: '0.20000000000000017764'
In [46]: '%.20f' % (1/(2.2 - 2))
Out[46]: '4.99999999999999555911'
感謝澄清,這是值得擁有的初衷。 – asdf 2013-03-02 22:56:16