Java BigDecimal比较不使用小数字
我需要为一个人工智能项目比较非常小的数字。以下是我的方法:Java BigDecimal比较不使用小数字,java,max,bigdecimal,compareto,Java,Max,Bigdecimal,Compareto,我需要为一个人工智能项目比较非常小的数字。以下是我的方法: private static int maximum(BigDecimal a1, BigDecimal a2){ System.out.println(a1); System.out.println(a2); if (a1.compareTo(a2)<0){ return 1; }else{ return 0; } 有没有办法用compareTo方法来比
private static int maximum(BigDecimal a1, BigDecimal a2){
System.out.println(a1);
System.out.println(a2);
if (a1.compareTo(a2)<0){
return 1;
}else{
return 0;
}
有没有办法用compareTo方法来比较我犯的这个小错误或简单错误?谢谢你的帮助
0e无论什么
仍然是0。它们都是零
E-932
之所以能够存活下来,是因为BigDecimal不仅存储数字,它还知道你的精度<代码>0E-917为0,但具有一定的精度
正如规范所述,compareTo
检查实际值并忽略精度级别,因此,所有这些值都是100%相等的:它们都是0
编辑:明确地说,
0E-917
不是“一个非常小的数字”它是零。精确性是有效的:一些计算是0.00000000…000000
,有917个零。它可能是非零的,但如果是,它至少在917个零之后才有一个非零的数字,我没有计算那么远。这一点,您的BD实例根本无法知道(它只存储了918个零)。0ewhich
仍然是0。它们都是零
E-932
之所以能够存活下来,是因为BigDecimal不仅存储数字,它还知道你的精度<代码>0E-917为0,但具有一定的精度
正如规范所述,compareTo
检查实际值并忽略精度级别,因此,所有这些值都是100%相等的:它们都是0
编辑:明确地说,0E-917
不是“一个非常小的数字”它是零。精确性是有效的:一些计算是0.00000000…000000
,有917个零。它可能是非零的,但如果是,它至少在917个零之后才有一个非零的数字,我没有计算那么远。这一点,您的BD实例完全没有办法知道(它只存储了918个零)
0E-917
0E-912
0
0E-918
0E-921
0
0E-932
0E-933
0