2014-03-29 41 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