比较BigDecimal对象是否相等
2006-06-29 15:45
375 查看
例子:
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
看这个例子就明白了!
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
看这个例子就明白了!
相关文章推荐
- 比较两个Image对象是否相等、xib中设置自定义整个cell的高度
- c\c++中比较两个字符串或string对象是否相等
- 比较俩个对象是否相等
- JS中如何比较两个Json对象是否相等实例代码
- 深入java的equals方法,怎么比较两个对象的内容是否相等?对象的内容指的是什么?
- 验证是否是类,对象是否对消息有回复,是否是接口,,比较两个对象是否相等,复制对象
- c\c++中比较两个字符串或string对象是否相等
- 关于直接比较两个对象是否相等或则说List集合里是否包含某个对象的问题
- JavaScript比较两个对象是否相等
- 比较任意两个JSON串是否相等(比较对象是否相等)JAVA版
- 比较两个对象的内容是否相等 重写object 的equals方法
- 比较两个对象是否相等
- JavaScript比较两个对象是否相等的方法
- 详解JS 比较两个Json对象的值是否相等的实例
- java 反射比较两个类型相同的对象 内部的变量是否相等
- c\c++中比较两个字符串或string对象是否相等
- C#使用Equals()方法比较两个对象是否相等的方法
- 直接比较两个对象是否相等返回false和List中判断是否包含某个对象的问题
- Java中对象间类型是否相等的比较:instanceof的特点
- 比较二个对象的每个值是否相等