中科院云平台架构师,专注于数字化、智能化,技术方向:云、Linux内核、AI、MES/ERP/CRM/OA、物联网、传感器、大数据、ML、微服务。
分类: Java
2013-06-14 17:22:47
以前用的int,long多一些。今天用到了Bigdecimal。一点体会:
判断一个数是否大于99.9一般的想法是:
BigDecimal aa = new BigDecimal(99.99).setScale(1, BigDecimal.ROUND_HALF_UP);
if (aa.compareTo(new BigDecimal(99.9)) == 1){
System.out.println("Largerl!!!");
} else if (aa.compareTo(new BigDecimal(99.9)) == 0){
System.out.println("Equal!!!");
} else if (aa.compareTo(new BigDecimal(99.9)) == -1){
System.out.println("Lower!!!");
}
第一次:
Largerl!!!
第二次:
Lower!!!
http://hiyachen.cublog.cn
郁闷吧。
我把(new BigDecimal(99.9))打印出来:
结果出乎预料:
第一次:
99.9000000000000489734
第二次:
99.899999999999154
发现问题解决很简单:
if (aa.compareTo(new BigDecimal(99.9)) == 1){
改成:
if (aa.compareTo(new BigDecimal(99.9).setScale(1, BigDecimal.ROUND_HALF_UP)) == 1){
即小数位数一样时再check
over.