BigDecimal的相关操作:字符串转BigDecimal,以及BigDecimal的加减乘除和保留2位小数

BigDecimal

String 转为 BigDecimal

		// 1. string 转 BigDecimal, 注意需要string中完全是数字, 不能有其他
        // BigDecimal error = new BigDecimal("error");
        // log.info("error...{}",error);
        BigDecimal numDecimal = new BigDecimal(num);
        log.info("numDecimal...{}", numDecimal);
        BigDecimal priceDecimal = new BigDecimal(price);
        log.info("priceDecimal...{}", priceDecimal);

加法

		// 2. 加法 add
        BigDecimal add = numDecimal.add(priceDecimal).setScale(2, RoundingMode.UP);
        log.info("和 add...{}", add);

减法

        // 3. 减法 subtract 
        BigDecimal subtract = numDecimal.subtract(priceDecimal).setScale(2, RoundingMode.DOWN);
        log.info("差 subtract...{}", subtract);

乘法

        // 4. 乘法 multiply 
        BigDecimal multiply = numDecimal.multiply(priceDecimal).setScale(2, RoundingMode.HALF_UP);
        log.info("积 multiply...{}", multiply);

除法

        // 5. 除法 divide
        BigDecimal divide = numDecimal.divide(new BigDecimal("10")).setScale(2, RoundingMode.HALF_DOWN);
        log.info("商 divide...{}", divide);

常用规则

        // .setScale(保留多少位小数, 以什么规则保留)
        /**
         * 规则: RoundingMode.UP; 等等
         * UP :  1.1 -> 2; 1.6 -> 2; 正数的更大,负数的更小; -1.1 -> -2; -1.6 -> -2;
         *
         * DOWN : 1.1 -> 1; 1.6 -> 1; 直接舍弃小数位; -1.1 -> -1; -1.6 -> -1;
         *
         * HALF_UP : 1.1 -> 1; 1.6 -> 2; 2.5 -> 3 四舍五入; -1.1 -> -1; -1.6 -> -2; -2.5 -> -3
         *
         * HALF_DOWN : 1.1 -> 1; 1.6 -> 2; 2.5 -> 2; 五舍六入; -1.1 -> -1; -1.6 -> -2; -2.5 -> -2
         *
         * */

总示例代码

@Slf4j
@SpringBootTest
public class BaseTest {

    @Test
    public void bigDecimalTest() {
        String num = "10", price = "20.5";
        // 1. string 转 BigDecimal, 注意需要string中完全是数字, 不能有其他
        // BigDecimal error = new BigDecimal("error");
        // log.info("error...{}",error);
        BigDecimal numDecimal = new BigDecimal(num);
        log.info("numDecimal...{}", numDecimal);
        BigDecimal priceDecimal = new BigDecimal(price);
        log.info("priceDecimal...{}", priceDecimal);
        // 2. 加法
        BigDecimal add = numDecimal.add(priceDecimal).setScale(2, RoundingMode.UP);
        log.info("和 add...{}", add);
        // 3. 减法
        BigDecimal subtract = numDecimal.subtract(priceDecimal).setScale(2, RoundingMode.DOWN);
        log.info("差 subtract...{}", subtract);
        // 4. 乘法
        BigDecimal multiply = numDecimal.multiply(priceDecimal).setScale(2, RoundingMode.HALF_UP);
        log.info("积 multiply...{}", multiply);
        // 5. 除法
        BigDecimal divide = numDecimal.divide(new BigDecimal("10")).setScale(2, RoundingMode.HALF_DOWN);
        log.info("商 divide...{}", divide);
        // .setScale(保留多少位小数, 以什么规则保留)
        /**
         * 规则: RoundingMode.UP; 等等
         * UP :  1.1 -> 2; 1.6 -> 2; 正数的更大,负数的更小; -1.1 -> -2; -1.6 -> -2;
         *
         * DOWN : 1.1 -> 1; 1.6 -> 1; 直接舍弃小数位; -1.1 -> -1; -1.6 -> -1;
         *
         * HALF_UP : 1.1 -> 1; 1.6 -> 2; 2.5 -> 3 四舍五入; -1.1 -> -1; -1.6 -> -2; -2.5 -> -3
         *
         * HALF_DOWN : 1.1 -> 1; 1.6 -> 2; 2.5 -> 2; 五舍六入; -1.1 -> -1; -1.6 -> -2; -2.5 -> -2
         *
         * */

    }

}

你可能感兴趣的:(后端,java基础问题,java,开发语言)