比较双精度值和双精度常量

问题描述 投票:0回答:1

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

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

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

boolean result = constant == reference;

[result不会总是是true吗?

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

java jvm double precision
1个回答
0
投票

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

对于财务软件BigDecimal,具有精确度的定点,比例通常是更好的选择。 new BigDecimal("12.00")给出小数点后2位小数的精度。

© www.soinside.com 2019 - 2024. All rights reserved.