将双精度值与双精度常量进行比较

时间:2019-11-04 09:28:14

标签: java jvm double precision

我知道有一些关于与delta进行双重比较的主题,这是比较double值的正确方法。

但是我的问题是关于将双精度值与常量进行比较。 JVM是否有可能以错误的精度存储值0(例如,从xml读取)?是否有可能:

double constant = 0.0;
double reference = readValueFromDocument();//which is 0

boolean result = constant == reference;

result不会总是true吗?

通常,问题听起来像是:JVM是在分配过程中以错误的精度存储了双常量,还是仅对计算有效?

1 个答案:

答案 0 :(得分:1)

0.0、0.00或0可以精确地表示为8字节的两倍。 0.2不。您的情况将永远是正确的。仅当变量的计算方式为0.1-0.2 + 0.1时,您才能预期会有小的偏差。这对于浮点的所有计算机语言均有效。同样,double不能保持精度。

对于金融软件BigDecimal,精度为 scale 的定点通常是更好的选择。 new BigDecimal("12.00")的精度为小数点后2位小数。

相关问题