gpt4 book ai didi

java - 我应该如何将 Double 值与 Long.MAX_VALUE 进行比较?和 Long.MAX_VALUE+1d

转载 作者:行者123 更新时间:2023-11-30 06:26:32 26 4
gpt4 key购买 nike

我想按如下方式比较两个 double 值:

Double doubleValue = Double.valueOf(Long.MAX_VALUE);

Double doubleValue2 = Double.valueOf(Long.MAX_VALUE+1d);

显然 doubleValue 和 doubleValu2 不相等,由于添加了 1d,2nd 更大。

但无论我使用 compare() 还是 equals() 方法,这两种方法都会为两个值返回相同的结果。有什么方法可以比较而不丢失准确性。

提前致谢。

最佳答案

这是因为在将 long 转换为 double 时会损失精度

    double d1 = (double)Long.MAX_VALUE;
double d2 = Long.MAX_VALUE + 1.0;
System.out.println(d1);
System.out.println(d2);

它给出了相同的数字

9.223372036854776E18
9.223372036854776E18

long 有 32 位,double 的有效数有 53 位 http://en.wikipedia.org/wiki/Double-precision_floating-point_format .十进制的话,max long = 9223372036854775807,是19位,double最多可以放17个

关于java - 我应该如何将 Double 值与 Long.MAX_VALUE 进行比较?和 Long.MAX_VALUE+1d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14189298/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com