将两个双变量相乘的结果为零,为什么?

时间:2017-01-25 16:05:58

标签: java double multiplication

当我在程序中乘以两个'double'变量时出现问题,我得到的结果为零。为什么呢?

例如:

1.0E-321 * 5.321777473676208E-4 = 0.0

如何防止结果不为零?

2 个答案:

答案 0 :(得分:5)

double有一个minimum value。如果您尝试存储小于该数字的数字,则会获得underflow

您可以使用BigDecimal类。

BigDecimal a = new BigDecimal("1.0E-321");
BigDecimal b = new BigDecimal("5.321777473676208E-4");
System.out.println(a.multiply(b));

答案 1 :(得分:-2)

Double有一个最大值和一个最小值(大约-1.7 * 10 ^ 308),因为你的计算结果接近5.3 E325它会显示一个错误你可以尝试先将数字乘以然后再指数为例如 1 * 5.32177,然后简单地添加权力(-321 +( - 4)),因此你可以得到你的答案。 :)