1. 奇数性
|
|
上面的method是错误的,会在1/4的时间里返回的是错误值
a % b = c中c的值取决于a;只要a为正,无论b取何值,若有余数,c一定为正,同理可知a为负,c一定为负值。
correct method:123456public static boolen idOdd(int i){ rutrun i%2 != 0;}punlic static boolen idOdd(int i){ retrun (i&1)!=0;}
2. 找零时刻
|
|
以上不会输出 0.9,而是0.899999999999
使用printf("%.2f%n"2.00-1.00);但是使用的double。
△ Double是在一个很广的值域上提供一个很好的相识值,并不是精确值。
在需要精确答案是,建议是要避免是用float和double,对于货币计算,建议使用int和long,Bigdecimal
一定要使用Bigdecimal(String)构造器,千万不要使用BIgdecimal(double),返回仍会是不精确的值。
3. 长整除
|
|
以上返回不会输出1000,而是5。
因为24*60*60*1000*1000会溢出,它并不是一个Long型,而是先算出结果后在转换成Long型的a。
|
|
△当操作很大的数时一定要提防溢出