我只是想了解更多有关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");
}
Run Code Online (Sandbox Code Playgroud)
结果=死亡
我还没有准备好" 死 ",为什么BigDecimal一心想要杀了我.
Jon*_*eet 10
这个说法:
Double x = 1.2;
Run Code Online (Sandbox Code Playgroud)
将最近的可double表示值分配给1.2 x.这只是小于 1.2 - 值1.2本身不能用二进制表示.
现在,当您BigDecimal从该值创建一个时,将保留"不完全1.2"的值.从构造函数的文档:
将double转换为BigDecimal,它是double的二进制浮点值的精确十进制表示形式.
...而当你使用new BigDecimal("1.2")结果时,正好是 1.2 - BigDecimal解析字符串,任何十进制字符串表示都可以完全表示BigDecimal,因为这是它的全部要点.
1.2比"最近double的1.2表示"略大,因此res为1.
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |