2014-03-29 38 views
0

我需要在Python中獲得2.66666666666666667。 8.0/3.0這讓我2.66666666666666665
但我想2.66666666666666667
當我這樣做8.0/3.0在C#中,我得到2.66666666666666667 It's像it's沒有我說是圓左右。Python劃分數字

+5

歡迎來到編程世界:http://docs.python.org/2/tutorial/floatingpoint.html – sshashank124

+0

和http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg。 html –

+0

它可能與浮點數和雙精度有關。 – Chet

回答

1

我會建議使用decimal模塊:

from decimal import * 
print(Decimal(8.0)/Decimal(3.0)) 

在引用鏈接還介紹瞭如何修改的背景和調整舍入或精度滿足您的需求。

2

二進制浮點有時不會存儲事物,因爲我們的基地10人想要的東西。

你可以四捨五入或使用字符串格式來獲得你想要的浮點數。

您可以使用十進制模塊而不是浮點數;它存儲的數字,即使分數,10爲基數

這裏的東西甚至比你問什麼,更精確:

>>> fractions.Fraction('8.0')/fractions.Fraction('3.0') 
Fraction(8, 3) 

的部分模塊讓你精確存儲有理數。

+0

+1爲「十位基地」和一個很好的解釋 – sshashank124