Java非常小的算术运算

时间:2014-03-04 19:29:22

标签: java numbers arithmetic-expressions

表达式的结果:2.227E-19-1.0+1.0将为0.0

如何获得2.227E-19的结果?

我有一个表达

a-b+1

  • 总是一个非常小的数字。
  • b可能接近1.0

当一个非常小的数字与大数字一起运作时,如何保持准确性?

3 个答案:

答案 0 :(得分:0)

只需使用double即可存储结果。它具有足够的精度用于此计算。

答案 1 :(得分:0)

如果您事先知道哪些操作数可以很小,您可以重新排序操作:

-b + 1 + a

这样,首先计算a之前的部分,并且双方(-b+1a)的大小大致相同,导致浮点问题减少。

以下是The Java™ Tutorials的相关部分:

  

同一行上的运算符具有相同的优先级。当具有相同优先级的运算符出现在同一表达式中时,规则必须控制首先计算的值。除了赋值运算符之外的所有二元运算符都是从左到右计算的;

答案 2 :(得分:0)

或者使用具有足够比例的BigDecimal。