我在Android上制作了一个计算器应用程序,但每当我做一些这样的乘法运算:
23.3 x 3.3
我得到的答案是:
76.988999999999
现在请告诉我如何使用此应用解决此冲突。答案应该是
76.89
答案 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);
}
}