java jdk 1.8 中为什么平均是 16666.0 而不是 16666.32?平均四舍五入为2个浮点数怎么写在一行?
float[] floats = {20000.0f, 20000.0f, 10000.0f};
double average = 0;
for (Float f : floats) {
average += f;
}
System.out.println(average);
average = Math.round(100 * (average / 3)) / 100;
System.out.println("Average salary: " + average);
答案 0 :(得分:2)
这是因为 Math.round(100 * (average / 3))
产生一个 long
,然后除以 int
,然后转换回双精度以适合 average
你应该用 double
而不是像下面这样的 int
来划分它
Math.round(100 * (average / 3)) / 100.0;
打印
50000.0
Average salary: 16666.67
这里是我以前调试的,我是一步一步搞定的
average / 3 = 16666.666666666668
100 * (average / 3) = 1666666.6666666667
Math.round(100.0 * (average / 3.0)) = 1666667
Math.round(100 * (average / 3)) / 100.0 = 16666