我是靠谱客的博主 感性草丛,最近开发中收集的这篇文章主要介绍BigDecimal类型计算和比较大小,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次方。因此,BigDecimal 表示的数值是 (unscaledValue × 10-scale)。

BigDecimal对金额的计算有着很友好的公式,希望能帮助到大家

一:计算,加减乘除

BigDecimal提供了内置的加减乘除函数

  • 加法:add()函数
  • 减法:subtract()函数
  • 乘法:multiply()函数
  • 除法:divide()函数
public static void main(String[] args) {
        //add 加法
        //subtract 减法
        //multiply 乘法
        //divide 除法
        BigDecimal B1 = new BigDecimal("9");
        BigDecimal B2 = new BigDecimal("3");
        System.out.println("B1+B2="+B1.add(B2));//B1.add(B2)
        System.out.println("B1-B2="+B1.subtract(B2));//B1.subtract(B2)
        System.out.println("B1*B2="+B1.multiply(B2));//B1.multiply(B2)
        System.out.println("B1/B2="+B1.divide(B2,2));//B1.divide(B2) 注:roundingMode(如果B1不能整除B2,roundingMode是精确到小数点几位,这里是精确到小数点后两位)

    }
输出结果
B1+B2=12
B1-B2=6
B1*B2=27
B1/B2=3

二:比较大小

BigDecimal的compareTo方法可以忽略精度的不同,只比较数值是否相同。

public static void main(String[] args) {
        BigDecimal B1 = new BigDecimal("9");
        BigDecimal B2 = new BigDecimal("3");

        //前提为a、b均不能为null
        if(B1.compareTo(B2) == -1){
            System.out.println("a小于b");
        }

        if(B1.compareTo(B2) == 0){
            System.out.println("a等于b");
        }

        if(B1.compareTo(B2) == 1){
            System.out.println("a大于b");
        }

        if(B1.compareTo(B2) > -1){
            System.out.println("a大于等于b");
        }

        if(B1.compareTo(B2) < 1){
            System.out.println("a小于等于b");
        }
    }
输出结果
a大于b
a大于等于b

最后

以上就是感性草丛为你收集整理的BigDecimal类型计算和比较大小的全部内容,希望文章能够帮你解决BigDecimal类型计算和比较大小所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(221)

评论列表共有 0 条评论

立即
投稿
返回
顶部