用于浮点精度的Python和java包
在用python(与Java相同)编写程序的过程中,我遇到了以下问题,我知道这是因为舍入错误
a = 0.3
b = 0.6;
print(a+b) #returns 0.8999999999999999 which makes a+b==0.9 false
我想知道python(和Java)中是否有任何包可以让这种情况下的工作变得更轻松,而不是在应用程序中定义一个错误边界并自己检查它,只需导入包,其余的就由它来处理了。(比如未来包中的除法:http://legacy.python.org/dev/peps/pep-0238/)
编辑:到目前为止(2016年7月),据我所知,它是唯一可以使用的十进制类。问题是,我不喜欢我们应该定义每个时间十进制类,而不是仅仅为变量赋值。我只是在寻找一个包,在导入之后,它会处理数字,并自动将它们转换为十进制(比如future
包中发生的事情,导入之后它会处理除法操作)。无论如何,我认为目前为止解决这个问题的最好方法是在python中使用Decimal
,在Java中使用BigDecimal
类
# 1 楼答案
是的,看看十进制库:https://docs.python.org/2/library/decimal.html
返回
True
及
返回
0.9
这里列出了一些其他选项:Clarification on the Decimal type in Python