乘法误差

时间:2011-10-13 03:30:58

标签: java android

如果我乘以12 x 25.4我得到304.7而我期望304.8。我看到使用奇数x 25.4我得到了正确的答案但是使用偶数总是看起来是0.1。我正在编写一个严重基于公式的科学应用程序,因此任何见解都会有所帮助。

if (((m1_sqs1_spinner.getSelectedItem().toString().equals("in"))))  

    { // start square in inches
         double m1_sqs1_eng = new Double(m1_sqs1.getText().toString()); 

         double square_effective_dia_inch = m1_sqs1_eng;

         double square_effective_dia_mm = square_effective_dia_inch * 25.4;
         m1_ed_mm.setText(Double.toString(square_effective_dia_mm));

    } // end square in inches

2 个答案:

答案 0 :(得分:2)

Java中的浮点数类型是近似值。尝试添加1 + 2 + 3 + 4作为float类型,最终可能会得到10.00000003。

为确保准确的数学运算,请尝试使用java.math.BigDecimal类型。这是一种记忆力,但准确无误。

答案 1 :(得分:1)

我不知道你正在使用什么编程语言,但当我使用Java执行此操作时,12 * 25.4给出了304.8:

public static void main(String[] args) {
   double result = 12 * 25.4;

   System.out.printf("Result: %.1f%n", result );
}

但严肃地说 - 你如何显示获得的结果?您是否使用Java中提供的众多数字格式选项之一(上面显示了其中一个)?您还了解使用64位IEEE 754浮点(双)变量时的精度限制吗?它们对于大多数浮点应用程序非常准确且有用,但对于具有严格精度要求的应用程序(如财务计算)则不是很有用。