两个double数相乘,精度不准确问题
(2012-10-30 21:35:49)
标签:
杂谈 |
分类: 综合 |
两个double数相乘,精度不准确问题
1.代码
- Java code
-
public static void main(String args[]) { double a = 11540.0; double b = 0.35; double result = a * b; System.out.println("控制台输出:"+a + " * " + b + " = " + result); System.out.println("计算器正确是:" + 4039 ); }
2.输出
控制台输出:11540.0 * 0.35 = 4038.9999999999995
计算器正确是:4039
3.问题
计算器能计算准确,但是如果我在程序中这样操作却出现了不精确的情况
如何能满足我类型是double,但是计算结果又精确一点的?
或者还有什么更好的替换方法?
解决方法1:
public static void main(String args[]) {
double a =
11540.0;
double b =
0.35;
double result = a
* b;
BigDecimal
a1 = new BigDecimal(Double.toString(a));
BigDecimal b1 =
new BigDecimal(Double.toString(b));
BigDecimal result1 = a1.multiply(b1);
System.out.println("控制台输出:"
+ a +
" * "
+ b +
" = "
+ result);
System.out.println("控制台输出2:" +
a1 + "
* " +
b1 + "
= " +
result1);
System.out.println("计算器正确是:" +
4039);
}
控制台输出:11540.0 * 0.35 = 4038.9999999999995
控制台输出2:11540.0 * 0.35 = 4039.000
计算器正确是:4039
方法2:
控制台输出:11540.0 * 0.35 =
4038.9999999999995
计算器正确是:4039
控制台输出:11540.0 * 0.35 = 4039.0
计算器正确是:4039