圆形方法不起作用
Round method doesn't work
在我的 Java 代码中,我尝试使用 Math.round()
方法。但是,当数字为 204.6 时,方法将其四舍五入为 204。我无法解决这个问题。这是我的代码;
//all[i] value of the index zero is 186.
//and it prints 204 not 205.
double updatedPassed = all[i].getPassed()+((all[i].getPassed()*10)/100);
System.out.println(Math.round(updatedPassed));
如果您的 all[i] 数组是一个整数数组,您将 运行 陷入这个问题。该数组需要是双精度类型,因为整数除法会得到一个整数。
不确定这是否是主要问题,因为您没有提到数组的类型。
给100加一个D
表示除法必须用浮点数来完成。
这样,你会得到一个浮动的结果。否则,它使用整数值作为结果。
作为算术,你得到 204.XXX 作为结果,它给出 204 作为整数结果。
//all[i] value of the index zero is 186.
//and it prints 204 not 205.
double updatedPassed = all[i].getPassed()+((all[i].getPassed()*10)/100D);
System.out.println(Math.round(updatedPassed));
将 all[i] 乘以 10 再除以 100 的代码将尝试将其转换为 int。尝试这样做:
double updatedPassed = all[i].getPassed()+(((double)all[i].getPassed()*10)/100);
System.out.println(Math.round(updatedPassed));
希望对您有所帮助
从 previous version of question 中提取了 OP 的答案:
I solved the problem with this changes:
double updatedPassed = (double)all[i].getPassed()+((double)(all[i].getPassed()*10)/100);
在我的 Java 代码中,我尝试使用 Math.round()
方法。但是,当数字为 204.6 时,方法将其四舍五入为 204。我无法解决这个问题。这是我的代码;
//all[i] value of the index zero is 186.
//and it prints 204 not 205.
double updatedPassed = all[i].getPassed()+((all[i].getPassed()*10)/100);
System.out.println(Math.round(updatedPassed));
如果您的 all[i] 数组是一个整数数组,您将 运行 陷入这个问题。该数组需要是双精度类型,因为整数除法会得到一个整数。
不确定这是否是主要问题,因为您没有提到数组的类型。
给100加一个D
表示除法必须用浮点数来完成。
这样,你会得到一个浮动的结果。否则,它使用整数值作为结果。
作为算术,你得到 204.XXX 作为结果,它给出 204 作为整数结果。
//all[i] value of the index zero is 186.
//and it prints 204 not 205.
double updatedPassed = all[i].getPassed()+((all[i].getPassed()*10)/100D);
System.out.println(Math.round(updatedPassed));
将 all[i] 乘以 10 再除以 100 的代码将尝试将其转换为 int。尝试这样做:
double updatedPassed = all[i].getPassed()+(((double)all[i].getPassed()*10)/100);
System.out.println(Math.round(updatedPassed));
希望对您有所帮助
从 previous version of question 中提取了 OP 的答案:
I solved the problem with this changes:
double updatedPassed = (double)all[i].getPassed()+((double)(all[i].getPassed()*10)/100);