代码
public static void main(String[] args) {
int a = (int) ((1000.0 * 60 + 2000.0) * 1.4f);
System.out.println(a);
}
输出 86799
然后这样的话
public static void main(String[] args) {
int a = (int) ((1000.0 * 60 + 2000.0) * 1.4);
System.out.println(a);
}
输出 86800
86800才是正确的,float和double运算时,会将float转换成double,float占4个字节,double占8个字节,所以转换成double时要补位,就会出现这种结果.丢精度了不能乱用啊!!!!!