`
xiaoboss
  • 浏览: 650747 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

BigDecimal如何比较是否相等

    博客分类:
  • java
UP 
阅读更多

例子:

BigDecimal a = new BigDecimal("2.00");

BigDecmial b = new BigDecimal(2);

System.out.println(a.equals(b));

输出结果是:false

原因是:BigDecimal比较时,不仅比较值,而且还比较精度???

解决方法:

BigDecimal a = new BigDecimal("2.00").setScale(2,BigDecimal.ROUND_HALF_DOWN);

BigDecmial b = new BigDecimal(2).setScale(2,BigDecimal.ROUND_HALF_DOWN);

System.out.println(a.equals(b));

结果就是:true

关于BigDecimal.ROUND_HALF_UP与ROUND_HALF_DOWN

ROUND_HALF_UP: 遇到.5的情况时往上近似,例: 1.5 ->;2
ROUND_HALF_DOWN : 遇到.5的情况时往下近似,例: 1.5 ->;1

BigDecimal a = new BigDecimal(1.5);
System.out.println("down="+a.setScale(0,BigDecimal.ROUND_HALF_DOWN)+"\tup="+a.setScale(0,BigDecimal.ROUND_HALF_UP));
结 果:down=1  up=2
看这个例子就明白了!

 

分享到:
评论

相关推荐

    java BigDecimal操作

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

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

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

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

    2. 当需要比较值的相等时,应使用 `compareTo()` 而不是 `equals()`,除非你确信两个 `BigDecimal` 的精度和标度都相同。 3. 在进行加减乘除操作后,根据需要使用 `setScale()` 方法调整精度,并选择合适的舍入模式...

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

    例如,`new BigDecimal("2.00")`与`new BigDecimal("2.0")`虽值相同,但`equals()`返回`false`,因为`scale`不同。 4. **舍入模式**:在进行除法操作时,需指定合适的舍入模式,以处理无法精确表示的除法结果。 5....

    BigDecimal加减乘除计算

    BigDecimal 类在 Java 中被设计用来处理高精度的浮点数运算,主要应用于财务、金融等领域,因为这些场景中对精度要求非常高。BigDecimal 提供了加法(add())、减法(subtract())、乘法(multiply())和除法...

    java中BigDecimal的操作方法

    4. **比较**:使用`compareTo()`而不是`equals()`进行比较,因为`equals()`检查数值和标度是否完全相同,而商业计算中通常关心的是数值的大小关系。 5. **精度管理**:根据业务需求设置合适的精度,过高可能导致性能...

    运用BigDecimal精确计算

    - 避免使用`equals()`方法比较`BigDecimal`对象,应该使用`compareTo()`,因为`equals()`是基于内容和类型进行比较的,而`compareTo()`是基于数值进行比较的。 示例代码: ```java import java.math.BigDecimal; ...

    因BigDecimal类型数据引出的问题详析

    当`compareTo()`返回0时,意味着两个BigDecimal相等,即使它们的scale不同。如`decimal1.compareTo(decimal2)`返回0,说明decimal1和decimal2数值上相等。 在实际项目中,如使用MyBatis作为持久层框架,可能会在...

    浅谈java中BigDecimal的equals与compareTo的区别

    如果符号相同,它会通过`matchScale`方法调整两个BigDecimal的精确度,使得它们具有相同的规模,然后再进行比较。这样可以确保即使精确度不同,也能正确判断数值的大小。例如: ```java System.out.println(bd1....

    Java BigDecimal详解_动力节点Java学院整理

    它不提供与以下操作相同的结果:先使用 Double.toString(double) 方法,然后使用 BigDecimal(String) 构造方法,将 double 转换为 String。 知识点 5:BigDecimal 的应用场景 BigDecimal 主要应用于商业计算、银行...

    java中double转化为BigDecimal精度缺失的实例

    由于之前已经发生了精度丢失,因此`bd`的值并不是期望的1607.55,而是与原始`double`结果相同,即1607.549999999999954525264911353588104248046875。 3. `System.out.println(bd.setScale(2, bd.ROUND_DOWN)....

    Java BigDecimal类的使用和注意事项

    不要直接使用`==`来比较两个`BigDecimal`对象,应该使用`compareTo()`方法,因为即使两个`BigDecimal`表示相同的数值,它们也可能不是同一个对象。例如: ```java BigDecimal a = new BigDecimal("1.0"); ...

    Java保留两位小数方法大全

    2. **避免直接比较浮点数**:不要直接比较两个浮点数是否相等,而是应该比较它们之间的差值是否在一个很小的范围内。 3. **使用`Math`类中的方法**:对于简单的数学操作,可以使用`Math`类中的方法,如`Math....

    BigNumber-源码.rar

    `compareTo()`方法是`BigDecimal`的一个重要成员,用于比较两个`BigDecimal`对象的大小。返回值为整数,表示两者之间的关系:正数表示当前对象大于另一个,负数表示当前对象小于另一个,零表示两者相等。 6. **...

    JAVA中浮点数的运算

    推荐使用`Math.abs(a - b) 的方式来判断两个浮点数是否近似相等,其中`epsilon`是一个极小的正值,表示允许的误差范围。 在实际开发中,如果对精度有较高要求,可以使用Java的`BigDecimal`类。`BigDecimal`提供了一...

    Java 精确计算-double-float-String

    2. **基本运算**:`BigDecimal`提供了加法(`add()`), 减法(`subtract()`), 乘法(`multiply()`) 和除法(`divide()`), 以及比较操作(`compareTo()`)等方法。 3. **设置精度**:为了控制计算结果的精度,可以使用`...

    JAVA API 总结

    默认情况下,该方法通过比较两个对象的引用是否相同来判断是否相等。在很多情况下,开发者会重写此方法来实现基于某些属性的逻辑相等。 2. **`protected void finalize()`**:垃圾回收机制调用的方法,用来清理资源...

    长方形和正方形的周长jsp(1).ppt

    同样,若长宽互换,周长不变,因为长方形对边相等。 3. 正方形的周长:正方形的四个边等长,所以周长是边长的四倍。例如,一个边长为8厘米的正方形,周长C = 边长 × 4 = 8厘米 × 4 = 32厘米。 在实际编程中,...

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

    如果要比较两个对象的是否相等的话,可以用Long对象的equals()方法。如果要进行“>”,“<”的比较的话,可以通过Long对象的longValue()方法。 long类型的大小比较 对于long类型的数据,这个数据是一个基本数据类型...

    Java Double 精度问题总结

    3. **避免直接比较**:当需要判断两个 `double` 值是否相等时,不要直接使用 `==` 操作符。应该定义一个很小的正数作为误差容限,并检查两个数之间的差值是否小于这个容限。 ```java double a = 0.1; double b =...

Global site tag (gtag.js) - Google Analytics