gpt4 book ai didi

java - 最大精度低于无限?

转载 作者:太空狗 更新时间:2023-10-29 22:58:26 26 4
gpt4 key购买 nike

我正在使用 BigDecimal 进行一些计算。最近我遇到了:

java.lang.ArithmeticException: 
Non-terminating decimal expansion; no exact representable decimal result.

该问题的答案发布在这里:ArithmeticException: "Non-terminating decimal expansion; no exact representable decimal result"

这意味着,有一些小数位数不受限制的除法,所以 BigDecimal 告诉我它无法准确计算结果。为避免这种情况,我必须调用 BigDecimal.setScale(SOMETHING, ROUNDING_MODE);

编辑:

现在的问题是将 SOMETHING 设置为可能的最大值。我可以使用精度低于 UNLIMITED (MathContext(precision)) 的 MathContext,但那里会出现同样的问题。下面需要有一个值 MathContext.UNLIMITED...

有人知道怎么做吗?

将我的第二个问题移至: Why is there no BigDecimal.setPrecision() method?

谢谢!

奥利弗

最佳答案

第一个问题:没有BigDecimal.UNLIMITED这样的东西。那没有任何意义。无穷大减一是多少? 因为 docs不要明确提及 BigDecimal 的默认 MathContext,我必须假设它是 MathContext.UNLIMITED .看到你有一个重复的小数,一个 BigDecimal 不能保存它,即使有无限的精度。相反,您需要任意选择一个值(例如 100 或 1000 - 我不知道您将这些数字用于什么)。如果您只关心第一个小数点后 15 位,那么如果您跟踪第一个小数点例如 100 位就永远不会出现舍入错误。

第二个问题:问一个单独的问题。

关于java - 最大精度低于无限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107162/

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