欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java中BigDecimal类型比较大小和绝对值计算方式,

来源: javaer 分享于  点击 26462 次 点评:174

java中BigDecimal类型比较大小和绝对值计算方式,


目录
  • BigDecimal类型比较大小和绝对值计算
    • 关键方法
    • 代码测试
    • 将equals()方法和compareTo()作比较
  • 常用的BigDecimal的定义和用法
    • BigDecimal在计算中体现出来的精准度
      • 1.BigDecimal有4个构造方法
      • 2.BigDecimal常用的加减乘除运算
      • 3.BigDecimal常用的比较大小方法
      • 4.在java中判断一个BigDecimal的值和0比较
  • 总结

    BigDecimal类型比较大小和绝对值计算

    涉及到BigDecimal类型的比较,最好使用compareTo()方法,不要用equals()方法(除非对精度有要求)。

    关键方法

    修饰符方法描述
    BigDecimalcompareTo(BigDecimal val)将此 BigDecimal与指定的BigDecimal进行 比较,小于返回-1,等于返回0,大于返回1

    代码测试

    import java.math.BigDecimal;
    //临时测试类
    public class CalculateTest {
        private static BigDecimal X=new BigDecimal("0.4");
        private static BigDecimal Y=new BigDecimal("0.5");
        private static BigDecimal Z=new BigDecimal("0.6");
        private static BigDecimal T=new BigDecimal("0.4");
        public static void main(String[] args) {
            System.out.println(X.compareTo(Y));
            System.out.println(Y.compareTo(X));
            System.out.println(X.compareTo(T));
            if(X.compareTo(Y)==-1){ //小于
                System.out.println(X+"小于"+Y);
            }
            if(Y.compareTo(X)==1){  //大于
                System.out.println(Y+"大于"+X);
            }
            if(X.compareTo(T)==0){  //等于
                System.out.println(X+"等于"+T);
            }
            if(Z.compareTo(Y)>-1){//大于等于
                System.out.println(Z+"大于等于"+Y);
            }
            if(X.compareTo(Y)<1){//小于等于
                System.out.println(X&#43;&#34;小于等于&#34;&#43;Y);
            }
            //BigDecimal绝对值计算
            System.out.println(X.subtract(Y).abs());
        }
    }

    运行结果:

    -1
    1
    0
    0.4小于0.5
    0.5大于0.4
    0.4等于0.4
    0.6大于等于0.5
    0.4小于等于0.5
    0.1

    将equals()方法和compareTo()作比较

        BigDecimal a&#61;new BigDecimal(&#34;0.1&#34;);
            BigDecimal b&#61;new BigDecimal(&#34;0.100&#34;);
            System.out.println(a.equals(b));
            System.out.println(a.compareTo(b));

    运行结果:

    false
    0

    我们发现两个的数值是一样的,只是精度不同,equals方法判断不相等,但是compareTo方法判断结果为相等,所以equals方法会考虑精度,但compareTo方法不会。

    常用的BigDecimal的定义和用法

    最近涉及到浮点数金额的一个运算,为了不失精度,想到了之前刷题用过的BigDecimal,也借此对它进行一个简单的复习。

    Java在java.math包中提供的API类BigDecimal对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。

    在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中用java.math.BigDecimal更为精准。

    BigDecimal创建的是对象,我们不能使用传统的 +、-、*、/ 等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。

    BigDecimal在计算中体现出来的精准度

    BigDecimal的用法:

    1.BigDecimal有4个构造方法

    • BigDecimal(int) 创建一个具有参数所指定整数值的对象。
    • BigDecimal(double) 创建一个具有参数所指定双精度值的对象。(不建议采用)
    • BigDecimal(long) 创建一个具有参数所指定长整数值的对象。
    • BigDecimal(String) 创建一个具有参数所指定以字符串表示的数值的对象(优先级最高)

    2.BigDecimal常用的加减乘除运算

    public BigDecimal add(BigDecimal value);  //加法
    public BigDecimal subtract(BigDecimal value);  //减法
    public BigDecimal multiply(BigDecimal value);  //乘法
    public BigDecimal divide(BigDecimal value); //除法

    3.BigDecimal常用的比较大小方法

    (int compareTo(Object o)):

    BigDecimal的equals方法当精度不一样的时候也当做不相等,而compareTo方法却可以忽略精度的不同,只比较数值是否相同。

    BigDecimal的compareTo()方法进行的是值比较,返回值为-1,0,1:

    • num1<num2, 返回-1
    • num1=num2,返回0
    • num1>num2, 返回1

    4.在java中判断一个BigDecimal的值和0比较

    int i=num.compareTo(BigDecimal.ZERO);

    根据 i 的值是 -1 or 0 or 1,即可判断 小于 or 等于 or 大于关系

    boolean flag = num.equals(BigDecimal.ZERO)

    直接根据 flag 的 true、false 进行判断

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持3672js教程。

    您可能感兴趣的文章:
    • 关于java.math.BigDecimal比较大小问题
    • java中BigDecimal类的构造详解及使用
    • 浅谈Java中BigDecimal类的简单应用
    • Java优雅的处理金钱问题(BigDecimal)
    • java数学类Math BigInteger BigDecimal使用介绍
    • Java中BigInteger与BigDecimal类用法总结
    相关栏目:

    用户点评