如何在android中使用double获得精确位的答案

时间:2013-03-24 11:18:34

标签: java android double floating-accuracy floating-point-precision

我在Android上制作了一个计算器应用程序,但每当我做一些这样的乘法运算:

23.3 x 3.3

我得到的答案是:

76.988999999999

现在请告诉我如何使用此应用解决此冲突。答案应该是

76.89

2 个答案:

答案 0 :(得分:6)

欢迎来到IEEE-754的世界。在这种特殊情况下,您可以使用BigDecimal而非double

获得更好的结果
import java.math.*;

public class BigCheck {
    public static final void main(String[] args) {
        BigDecimal a = new BigDecimal("23.3");
        BigDecimal b = new BigDecimal("3.3");
        System.out.println(a.multiply(b));
    }
}

...但BigDecimal有自己的问题(例如,尝试10 / 3)。但它可能是计算器应用程序的更好选择,请记住,在分割时,您可能需要使用the version that accepts a scale and rounding mode。并且一定要阅读课程的细节,以便了解它的规模概念。

答案 1 :(得分:2)

你的问题不明确。我想你想得到确切的数字答案。

DecimalFormat df = new DecimalFormat(".##");
String result = df.format(76.988999999999);

修改

学习此十进制格式的示例。

import java.text.DecimalFormat;

class Demo {
    public static void main(String args[])  
    {
        double b = 756.988999999999;
        DecimalFormat df = new DecimalFormat(".##");
        String result = df.format(b);
        System.out.printf(result);  
    }
}