用于浮点精度的Python和java包

用于浮点精度的Python和java包,java,python,math,floating-accuracy,rounding-error,Java,Python,Math,Floating Accuracy,Rounding Error,在用python编写程序的过程中(在Java中也是如此),我遇到了以下问题,我知道这是因为舍入错误 a = 0.3 b = 0.6; print(a+b) #returns 0.8999999999999999 which makes a+b==0.9 false 我想知道python(和Java)中是否有任何包可以让这种情况变得更容易,而不是在应用程序中定义一个错误边界并自己检查,只需导入包,其余的就由它来处理了。(就像未来套餐中的division:) 编辑:到目前为止(2016年7月),据

在用python编写程序的过程中(在Java中也是如此),我遇到了以下问题,我知道这是因为舍入错误

a = 0.3
b = 0.6;
print(a+b) #returns 0.8999999999999999 which makes a+b==0.9 false
我想知道python(和Java)中是否有任何包可以让这种情况变得更容易,而不是在应用程序中定义一个错误边界并自己检查,只需导入包,其余的就由它来处理了。(就像未来套餐中的division:)


编辑:到目前为止(2016年7月),据我所知,它是唯一可以使用的十进制类。问题是,我不喜欢我们应该定义每个timedecimal类而不是仅仅为变量赋值的方式。我只是在寻找一个包,在导入后,它会处理数字并自动将其转换为十进制(就像
future
包中发生的情况,导入后它会处理除法操作)。无论如何,到目前为止,我认为解决这个问题的最佳方法是在python中使用
Decimal
,在Java中使用
BigDecimal

返回
True

返回
0.9


这里列出了一些其他选项:

那么您希望这样的包做些什么呢?我已经知道python中的Decimal类。问题是,我不喜欢我们应该定义每个timedecimal类而不是仅仅为变量赋值的方式。它是一种软件包,如果我们导入它,它会关注浮点,就像自动将所有浮点值更改为十进制类一样。我非常确定它在python中是可行的(而且可能可以通过注入和使用java中的BigDeicmal类来实现)。我知道用java很难做到这一点,但也许应该有别的东西,而不是在python中使用十进制。谢谢你的回答。我已经通过添加一个错误边界解决了我的特殊问题,我问这个问题只是出于好奇。请看我问题下方的评论。
from decimal import Decimal
a = Decimal('0.3')
b = Decimal('0.6')
a + b == Decimal('0.9')
print(a + b)