gpt4 book ai didi

java - 两个数字的差异 - BigDecimal

转载 作者:行者123 更新时间:2023-11-29 09:39:21 24 4
gpt4 key购买 nike

我只是想了解更多关于 BigDecimal 的信息,但下面的代码让我感到困惑。

Double x = 1.2;
String y = "1.2";

BigDecimal a = BigDecimal.ZERO;
BigDecimal b = BigDecimal.ZERO;

a = new BigDecimal(x);
b = new BigDecimal(y);

int res = res = b.compareTo(a);

if(res==1){
System.out.println("Die");
}else if(res ==0){
System.out.println("Live");
}else if (res==-1){
System.out.println("God Loves you");
}

Result = Die

我还没准备好“”,为什么 BigDecimal 一心想杀了我。

最佳答案

这个声明:

Double x = 1.2;

最接近的 double 可表示值 分配给 1.2 到 x。这只是小于 1.2 - 值 1.2 本身不能用二进制精确表示。

现在,当您从该值创建一个 BigDecimal 时,该“不完全是 1.2”的值将被准确保留。来自构造函数的文档:

Translates a double into a BigDecimal which is the exact decimal representation of the double's binary floating-point value.

... 而当您使用 new BigDecimal("1.2") 时,结果完全 1.2 - BigDecimal 解析字符串,并且任何十进制字符串表示都可以BigDecimal 精确表示,因为这就是它的全部要点。

1.2 比“1.2 最近的 double 表示”稍大,因此 res 为 1。

关于java - 两个数字的差异 - BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18268093/

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