![34adf3a7ae30393d8be6d433d380f314.png](https://i-blog.csdnimg.cn/blog_migrate/30466736ef75d07c29b71fe886d3e922.jpeg)
使用Java开发多年,但是被Java狂虐却从来都没变过,而且任何一个Java的小角落,都能把我虐的体无完肤,但是无奈要靠Java吃饭,还得恬着脸继续使用下去。
最近开发的项目中涉及到了大量的资金计算,资金计算对数字要求的比较严谨,作为一个粗心而又自大的Java程序员,一直没把这个当回事儿,于是又被Java吊打一遍。
下面记录一下Java中四则运算的一些需要注意的小坑,加减乘除都有坑噢,一不小心就进坑!
数学计算,免不了要想到 int long double 这种数据类型,但double自古在程序界就特立独行,表面上看像数学中学到的小数,实际上完全两码事儿。
下面开始趟坑:
Double的坑
坑1:加法坑
double d1 = 0.1;d1 += 0.1;d1 += 0.1;d1 += 0.1;d1 += 0.1;d1 += 0.1;d1 += 0.1;d1 += 0.1;d1 += 0.1; // 连着加了8次System.out.println(d1);
0.8999999999999999
不是我们期望的0.9哦
坑2:减法坑
double d1 = 1.0;double d2 = 0.1;d1 -= d2;d1 -= d2;d1 -= d2;d1 -= d2;d1 -= d2;d1 -= d2;d1 -= d2;d1 -= d2;d1 -= d2;// 连着减了9次0.1System.out.println(d1);
0.10000000000000014
不是我们期望的0.1哦
坑3:乘法坑
double d1 = 123213.0;d1 *= 0.35;System.out.println(d1);
43124.549999999996
不是我们期望的43124.55哦