gpt4 book ai didi

java - 用于浮点精度的 Python 和 java 包

转载 作者:行者123 更新时间:2023-11-30 03:44:01 26 4
gpt4 key购买 nike

在用 python 编写程序时(与 Java 中相同),我遇到了以下问题,我知道这是由于舍入错误造成的。

a = 0.3
b = 0.6;
print(a+b) #returns 0.8999999999999999 which makes a+b==0.9 false

我想知道Python(和Java)中是否有任何包可以让这种情况变得更轻松,而不是在应用程序中定义错误绑定(bind)并自己检查它,只需导入包,它会处理其余的事情。 (就像 future 包中的除法一样: http://legacy.python.org/dev/peps/pep-0238/ )

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

最佳答案

是的,看看十进制库:https://docs.python.org/2/library/decimal.html

from decimal import Decimal
a = Decimal('0.3')
b = Decimal('0.6')
a + b == Decimal('0.9')

返回True

print(a + b)

返回0.9

此处列出了一些其他选项:Clarification on the Decimal type in Python

关于java - 用于浮点精度的 Python 和 java 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26200822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com