`

BigDecimal如何比较大小

阅读更多

        BigDecimal是Java里精确计算的类,下面说一下两个BigDecimal对象大小,相等的判断。

        一般的对象用equals,但是BigDecimal比较特殊,举个例子:

BigDecimal a=BigDecimal.valueOf(1.0);
BigDecimal b=BigDecimal.valueOf(1.000);

        在现实中这两个数字是相等的,但是如果用a.equals(b)结果是false;怎么不相等了呢?因为equals是比较内容,“1.0”和“1.000”当然不一样了。

        解决办法:if(a.compareTo(b)==0) 结果是true。

实例一:

package com.bijian.test;

import java.math.BigDecimal;

public class Test {

    public static void main(String[] args) {
        
        BigDecimal a = new BigDecimal("10.00");
        BigDecimal b = new BigDecimal("10");
        BigDecimal c = new BigDecimal(10.00);
        
        //equals方式
        System.out.println(a.equals(b)); //false
        System.out.println(a.equals(c)); //false
        
        //toPlainString再equals
        System.out.println(a.toPlainString().equals(b.toPlainString())); //false
        System.out.println(a.toPlainString().equals(c.toPlainString())); //false
        
        //longValue方式
        System.out.println(a.longValue() == b.longValue()); //true
        System.out.println(a.longValue() == c.longValue()); //true
        
        //compareTo
        System.out.println(a.compareTo(b) == 0); //true
        System.out.println(a.compareTo(c) == 0); //true
    }
}

        从实例一来看,好像longValue方式也可以,让我们继续看实例二。

实例二:

package com.bijian.test;

import java.math.BigDecimal;

public class Test02 {

    public static void main(String[] args) {
        
        BigDecimal d = new BigDecimal("10.100001");
        BigDecimal e = new BigDecimal(10.100001);
        
        System.out.println(e.equals(d)); //false
        System.out.println(e.toPlainString().equals(d.toPlainString())); //false
        System.out.println(e.longValue() == d.longValue()); //true
        System.out.println(e.compareTo(d) == 0); //false
    }
}

  为什么compareTo方法不可以了,而longValue方式却还是OK的。让我们Debug一下。

 


        Debug我们发现,BigDecimal d = new BigDecimal("10.100001");和BigDecimal e = new BigDecimal(10.100001);出来的两个对象,实际上确实是不一样的,而longValue()后都变成了10。

  • 大小: 25.5 KB
  • 大小: 40.5 KB
  • 大小: 23.4 KB
分享到:
评论

相关推荐

    Java中BigDecimal的加减乘除、比较大小与使用注意事项

    `compareTo()`方法用于比较两个`BigDecimal`对象的大小,返回值为: - `-1`表示第一个对象小于第二个; - `0`表示两者相等; - `1`表示第一个对象大于第二个。 ```java BigDecimal num1 = new BigDecimal("0"); ...

    关于BigDecimal的构造函数与大小比较

    BigDecimal的大小比较,1.0与1.00是不相等的,得采用它自带的compareTo方法: java 代码 int i=b1.compareTo(b2) 这一次,返回的i可能为-1、0、1,分别表示小于、等于、大于 构造函数:解决了上面这个问题好像...

    java BigDecimal操作

    BigDecimal还提供了比较操作,如`compareTo()`方法,用于比较两个BigDecimal值的大小。返回值为负数表示第一个小于第二个,零表示相等,正数表示第一个大于第二个。 此外,`scale()`和`precision()`方法分别用于...

    java中BigDecimal的操作方法

    BigDecimal还提供了其他一些方法,如`compareTo()`用于比较两个BigDecimal对象的大小,`scale()`获取小数点后的位数,`stripTrailingZeros()`去除尾部的零,`toPlainString()`返回不包含科学记数法的字符串表示等。...

    java-BigInteger-BigDecimal类源码

    4. **比较操作**:`BigInteger`提供了`compareTo()`方法,用于比较两个`BigInteger`对象的大小。 5. **不可变性**:`BigInteger`对象是不可变的,这意味着一旦创建,它们的值就不会改变。这是为了保证线程安全和...

    js_bigdecimal_1_0_1.zip

    2. **比较操作**:可以比较两个大数的大小,支持等于、小于、大于等关系判断。 3. **格式化输出**:提供格式化数字的功能,如控制小数点后的位数,添加千位分隔符等。 4. **舍入模式**:支持多种舍入策略,如四舍五...

    BigInteger BigDecimal 使用

    它支持各种数学运算,如加法、减法、乘法、除法、求幂等,并且提供了比较操作符来比较两个`BigInteger`对象的大小。例如: ```java BigInteger a = new BigInteger("100"); BigInteger b = new BigInteger("200"); ...

    将 BigDecimal 类型转换为 Integer 类型.pdf

    BigDecimal 类型是 Java 提供的一种用于精确算术运算的类,它支持任意大小的十进制数,并且能够避免浮点数计算时可能出现的舍入误差。然而,有时我们需要将这些大数转换为整数类型,如 Integer,以便于存储或者进行...

    BigDecimal计算

    4. **比较操作**:`compareTo()`方法可以比较两个`BigDecimal`对象的大小,返回值为负、零或正,表示小于、等于或大于。 5. **格式化**:`toPlainString()`方法返回不包含科学计数法的大数字符串,而`toString()`...

    javascript BigDecimal 大数运算类 单文件浓缩版

    本版中只有一个用于生产环境的文件:BigDecimal-all-last.min.js,大小为26K,如果WEB服务器打开GZIP压缩,可以减小至7K,如需完整版本请移步至:http://download.csdn.net/detail/aquaqu2009/4575230 简单用法: ...

    javascrpt BigDecimal 大数运算类 完整版(包括例子)

    其中BigDecimal-all-last.min.js大小为:26KB GZIP压缩后7K,完全可以用于实际生产过程中。 简单例子: var a = new BigDecimal("1500"); var b = new BigDecimal("33"); alert(a.multiply(b)); alert&#...

    Java中BigDecimal精度和相等比较的坑

    而 `compareTo()` 方法则用于比较两个 `BigDecimal` 的大小,返回值表示它们的相对顺序。 在示例代码中,展示了四种创建 `BigDecimal` 并与 `BigDecimal.ZERO` 进行相等比较的情况: 1. 直接使用 `new BigDecimal...

    关于java中BigDecimal的简介(csdn)————程序.pdf

    `BigDecimal`还提供了多种其他方法,如`compareTo()`用于比较两个`BigDecimal`的大小,`scale()`获取小数部分位数,`stripTrailingZeros()`去除尾随零,`toPlainString()`返回不带科学计数法的字符串表示等。...

    运用BigDecimal精确计算

    `BigDecimal`提供了`compareTo()`方法用于比较两个`BigDecimal`对象的大小。返回值为负数表示当前对象小于另一个,0表示相等,正数表示当前对象大于另一个。 5. 格式化输出: 将`BigDecimal`对象转换为字符串时,...

    Java编程BigDecimal用法实例分享

    例如,可以使用equals()方法和compareTo()方法来比较两个BigDecimal对象的大小。也可以使用add()、subtract()、multiply()和divide()方法来进行数学运算。 在本文中,我们提供了一个测试代码,展示了如何创建...

    Java中BigDecimal类的简单用法

    在实际开发中,BigDecimal类提供了许多其他的方法,如add()用于加法,divide()用于除法,compare()用于比较两个BigDecimal对象的大小,scale()和precision()用于获取或设置小数位数等。在进行商业计算时,尤其是涉及...

    Java BigDecimal类用法详解

    - `compareTo(BigDecimal bd)`:比较两个`BigDecimal`对象的大小。 - `divide(BigDecimal divisor, int scale, RoundingMode roundingMode)`:除法运算,指定标度和舍入模式。 - `multiply(BigDecimal ...

    Java BigDecimal使用及基本运算(推荐)

    此外,BigDecimal 还提供了其他一些高级运算和方法,如比较两个数的大小(`compareTo()`)、求最大值(`max()`)、求最小值(`min()`)以及格式化输出(`toPlainString()` 和 `toString()`)等。 在处理财务计算时...

    java_资金运算工具类_提供精确的加减乘除法等运算

    一些工具类代码块的集合: 提供精确的加法运算 提供精确的减法运算 提供精确的乘法运算 精确的除法运算. 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,...比较大小 获取自己想要的数据格式

    Java中long类型与Long类型的区别和大小比较详解

    Java中long类型与Long类型的区别和大小比较详解 在Java中,long类型和Long类型都是用于表示数字的数据类型,但是它们之间存在着一定的区别。long类型是基本数据类型,而Long类型是对象类型,本文将通过示例代码详细...

Global site tag (gtag.js) - Google Analytics