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。
相关推荐
`compareTo()`方法用于比较两个`BigDecimal`对象的大小,返回值为: - `-1`表示第一个对象小于第二个; - `0`表示两者相等; - `1`表示第一个对象大于第二个。 ```java BigDecimal num1 = new BigDecimal("0"); ...
BigDecimal的大小比较,1.0与1.00是不相等的,得采用它自带的compareTo方法: java 代码 int i=b1.compareTo(b2) 这一次,返回的i可能为-1、0、1,分别表示小于、等于、大于 构造函数:解决了上面这个问题好像...
BigDecimal还提供了比较操作,如`compareTo()`方法,用于比较两个BigDecimal值的大小。返回值为负数表示第一个小于第二个,零表示相等,正数表示第一个大于第二个。 此外,`scale()`和`precision()`方法分别用于...
BigDecimal还提供了其他一些方法,如`compareTo()`用于比较两个BigDecimal对象的大小,`scale()`获取小数点后的位数,`stripTrailingZeros()`去除尾部的零,`toPlainString()`返回不包含科学记数法的字符串表示等。...
4. **比较操作**:`BigInteger`提供了`compareTo()`方法,用于比较两个`BigInteger`对象的大小。 5. **不可变性**:`BigInteger`对象是不可变的,这意味着一旦创建,它们的值就不会改变。这是为了保证线程安全和...
2. **比较操作**:可以比较两个大数的大小,支持等于、小于、大于等关系判断。 3. **格式化输出**:提供格式化数字的功能,如控制小数点后的位数,添加千位分隔符等。 4. **舍入模式**:支持多种舍入策略,如四舍五...
它支持各种数学运算,如加法、减法、乘法、除法、求幂等,并且提供了比较操作符来比较两个`BigInteger`对象的大小。例如: ```java BigInteger a = new BigInteger("100"); BigInteger b = new BigInteger("200"); ...
BigDecimal 类型是 Java 提供的一种用于精确算术运算的类,它支持任意大小的十进制数,并且能够避免浮点数计算时可能出现的舍入误差。然而,有时我们需要将这些大数转换为整数类型,如 Integer,以便于存储或者进行...
4. **比较操作**:`compareTo()`方法可以比较两个`BigDecimal`对象的大小,返回值为负、零或正,表示小于、等于或大于。 5. **格式化**:`toPlainString()`方法返回不包含科学计数法的大数字符串,而`toString()`...
本版中只有一个用于生产环境的文件:BigDecimal-all-last.min.js,大小为26K,如果WEB服务器打开GZIP压缩,可以减小至7K,如需完整版本请移步至:http://download.csdn.net/detail/aquaqu2009/4575230 简单用法: ...
其中BigDecimal-all-last.min.js大小为:26KB GZIP压缩后7K,完全可以用于实际生产过程中。 简单例子: var a = new BigDecimal("1500"); var b = new BigDecimal("33"); alert(a.multiply(b)); alert&#...
而 `compareTo()` 方法则用于比较两个 `BigDecimal` 的大小,返回值表示它们的相对顺序。 在示例代码中,展示了四种创建 `BigDecimal` 并与 `BigDecimal.ZERO` 进行相等比较的情况: 1. 直接使用 `new BigDecimal...
`BigDecimal`还提供了多种其他方法,如`compareTo()`用于比较两个`BigDecimal`的大小,`scale()`获取小数部分位数,`stripTrailingZeros()`去除尾随零,`toPlainString()`返回不带科学计数法的字符串表示等。...
`BigDecimal`提供了`compareTo()`方法用于比较两个`BigDecimal`对象的大小。返回值为负数表示当前对象小于另一个,0表示相等,正数表示当前对象大于另一个。 5. 格式化输出: 将`BigDecimal`对象转换为字符串时,...
例如,可以使用equals()方法和compareTo()方法来比较两个BigDecimal对象的大小。也可以使用add()、subtract()、multiply()和divide()方法来进行数学运算。 在本文中,我们提供了一个测试代码,展示了如何创建...
在实际开发中,BigDecimal类提供了许多其他的方法,如add()用于加法,divide()用于除法,compare()用于比较两个BigDecimal对象的大小,scale()和precision()用于获取或设置小数位数等。在进行商业计算时,尤其是涉及...
- `compareTo(BigDecimal bd)`:比较两个`BigDecimal`对象的大小。 - `divide(BigDecimal divisor, int scale, RoundingMode roundingMode)`:除法运算,指定标度和舍入模式。 - `multiply(BigDecimal ...
此外,BigDecimal 还提供了其他一些高级运算和方法,如比较两个数的大小(`compareTo()`)、求最大值(`max()`)、求最小值(`min()`)以及格式化输出(`toPlainString()` 和 `toString()`)等。 在处理财务计算时...
一些工具类代码块的集合: 提供精确的加法运算 提供精确的减法运算 提供精确的乘法运算 精确的除法运算. 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,...比较大小 获取自己想要的数据格式
Java中long类型与Long类型的区别和大小比较详解 在Java中,long类型和Long类型都是用于表示数字的数据类型,但是它们之间存在着一定的区别。long类型是基本数据类型,而Long类型是对象类型,本文将通过示例代码详细...