在用整数进行操作的时候,注意
1、检查整数除法
注意整数除法最后的结果是整数,即使中间结果也是。因此在计算的时候需要当心。如10*(7/10) = 0
2、检查整数溢出
在做整数乘法或者加法的时候,要留心能求出的最大整数,看是否大于该数据类型的最大值。
另外要考虑到程序的未来发展,如果整数在当前的环境下,不可能溢出;未来如果会的话也要注意。
3、检查中间结果的溢出
要小心,即使可能最后的结果没有溢出,但是计算的中间值却溢出了。
如:int a = 100000;int b = a*a/a;这个时候中间结果(a*a就溢出了)
使用浮点数应该遵循的指导原则:
1、避免数量级相差巨大的数之间的加减运算,如1000000.00+0.1=1000000.00。
如果必须这么做,那么就先对这些数进行排序,然后从最小值开始把他们加起来。同样,如果你需要对无穷数列进行求和,那么就从最小的值开始。
2、避免等量判断
因为计算机存储的浮点数并不精确,许多从数学上来看应该相等的浮点数未必相等。如10个0.1相加未必等于1.0。
一种可行的办法是先确定可以接受的误差范围,然后用布尔数值去判断是否接近。如Math.abs(a-b)<acceptedEstimate的话就判断为相等。
在java中,基本数据类型的封装类型都提供了compareTo()方法用来判断是否相等。
3、处理舍入误差问题
解决办法有:换用一种精度更高的类型
采用BCD码(用4位二进制数来表示1位十进制数中的0~9这10个数码)
把浮点变量变成整型变量,然后进行计算,这时候就要手动计算了。
4、检查语言和函数库对特定数据类型的支持