为什么我不能绕行Math.round这双到最近的INT,我得到这个错误“无法从长转换为int”
Double bat_avg = Double.parseDouble(data[4])/Double.parseDouble(data[2]);
int ibat_avg = Math.round(bat_avg*1000.00);
System.out.println(bat_avg);
为什么我不能绕行Math.round这双到最近的INT,我得到这个错误“无法从长转换为int”
Double bat_avg = Double.parseDouble(data[4])/Double.parseDouble(data[2]);
int ibat_avg = Math.round(bat_avg*1000.00);
System.out.println(bat_avg);
您可以使用浮动改为:
Float bat_avg = Float.parseFloat(data[4]) / Float.parseFloat(data[2]);
int ibat_avg = Math.round(bat_avg * 1000.00f);
System.out.println(bat_avg);
有两个版本Math.round
:
Math.round(double d)
返回long
。 Math.round(float)
返回int
。 Math.round(double)
将返回一个长,不能隐浇注,你会失去精度。 你必须明确地将它转换为int:
int ibat_avg = (int)Math.round(bat_avg*1000.00);
Math.round(双人间)返回长。 Math.round(浮点)返回int。
所以,这两个解决方案
int ibat_avg = Math.round((float) bat_avg*1000.00);
要么
int ibat_avg = (int) Math.round(bat_avg*1000.00);