我需要在Python中获得2.66666666666666667。 8.0/3.0
这让我得到了2.66666666666666665
但我想要2.66666666666666667
当我在C#中执行8.0/3.0
时,我得到2.66666666666666667
就像它没有我的说法那样圆润。
答案 0 :(得分:2)
二进制浮点有时不存储我们基于10-beings想要的东西。
您可以使用字符串格式进行舍入或使用浮点数来获得所需的内容。
您可能使用十进制模块而不是浮点数;它将数字,甚至分数存储在基数10中。
这里的内容比你要求的更精确:
>>> fractions.Fraction('8.0') / fractions.Fraction('3.0')
Fraction(8, 3)
分数模块允许您精确存储有理数。
答案 1 :(得分:1)
我建议使用decimal模块:
from decimal import *
print(Decimal(8.0) / Decimal(3.0))
在参考链接中,它还解释了如何修改上下文并调整舍入或精度以满足您的需求。