BigDecimal Addition, Subtraction, Multiplication and Division | Compare Size | Take Maximum and Minimum Values | Keep Decimal Places

BigDecimal Addition, Subtraction, Multiplication, and Division | Compare Size | Take Maximum and Minimum Values ​​| Keep Decimals

One, addition, subtraction, multiplication and division

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

Two, compare size

When comparing here, you can’t directly num4.compareTo(new BigDecimal(1)) == 1 or -1, only num4.compareTo(new BigDecimal(1))> 0 or <0 or "= = 0", you can’t judge directly 1 or -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;
}

Three, take the maximum and minimum

BigDecimal num7 = new BigDecimal(11);
BigDecimal num8 = new BigDecimal(22);

-- 比较两个数的大小,返回小的数
System.out.println(num7.min(num8));
-- 结果:11

-- 比较两个数的大小,返回大的数
System.out.println(num7.max(num8));
-- 结果:22

Four, keep decimals

-- 注意这里new Bigdecimal不能直接使用floatdouble类型

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

Five, the pits encountered, there are decimal precision problems

When a new object is new, the integer can be directly like this: new BigDecimal(10); but there will be a loss of precision with decimals, such as: new BigDecimal(10.13456), so the decimals should be processed with strings: new BigDecimal("10.13456 ").

Guess you like

Origin blog.csdn.net/s_156/article/details/113513343