BigDecimalの加算、減算、乗算、除算|サイズの比較|最大値と最小値の取得|小数の保持
1つ、足し算、引き算、掛け算、割り算
BigDecimal num1 = new BigDecimal(2);
BigDecimal num2 = new BigDecimal(6);
BigDecimal num3 = null;
-- 加 2+6
num3 = num1.add(num2);
-- 结果:8
-- 减 6-2
num3 = num2.subtract(num1);
-- 结果:4
-- 乘 2*6
num3 = num1.multiply(num2);
-- 结果:12
-- 除 6/2
num3 = num2.divide(num1);
-- 结果:3
2、サイズを比較
ここで比較する場合、直接num4.compareTo(new BigDecimal(1))== 1または-1にすることはできません。num4.compareTo(newBigDecimal(1))> 0または<0または "= = 0"のみ、 1または-1を直接判断することはできません
BigDecimal num4 = new BigDecimal(0);
BigDecimal num5 = new BigDecimal(1);
BigDecimal num6 = new BigDecimal(2);
-- 小于 0<1
int i = num4.compareTo(new BigDecimal(1)); -- 结果:-1
-- 等于 1=1
i = num5.compareTo(new BigDecimal(1)) -- 结果:0
-- 大于 2>1
i = num6.compareTo(new BigDecimal(1)) -- 结果:1
-- 常用一步到位进行判断:
if(num4.compareTo(new BigDecimal(1)) > 0){
return true;
}
3つ、最大値と最小値を取ります
BigDecimal num7 = new BigDecimal(11);
BigDecimal num8 = new BigDecimal(22);
-- 比较两个数的大小,返回小的数
System.out.println(num7.min(num8));
-- 结果:11
-- 比较两个数的大小,返回大的数
System.out.println(num7.max(num8));
-- 结果:22
4、小数を保持します
-- 注意这里new Bigdecimal不能直接使用float和double类型
BigDecimal num9 = new BigDecimal("3.14559");
BigDecimal num10 = null;
-- 表示直接去掉多余的位数,不进行四舍五入
num10 = num9.setScale(2, BigDecimal.ROUND_DOWN);
System.out.println(num10);
-- 结果:3.14
-- 表示进位处理,即四舍五入
num10 = num9.setScale(2, BigDecimal.ROUND_UP);
System.out.println(num10);
-- 结果:3.15
5、遭遇したピット、小数精度の問題があります
新しいオブジェクトが新しい場合、整数は次のようになります。newBigDecimal(10);ただし、次のように小数では精度が低下します。newBigDecimal(10.13456)なので、小数は文字列で処理する必要があります。 new BigDecimal( "10.13456")。