经过简单的除法后,我尝试将结果四舍五入到小数点后两位。一切正常,但在某些设备上,我收到此符号“?” 作为分裂的结果。当我尝试将其四舍五入到小数点后 2 位时,此符号会导致数字格式异常。有人可以向我解释为什么会发生这种情况,以及我如何解决它
我的代码:
double total = 0;
double average = 0;
for (HashMap.Entry<String, Double> entry : ratings.entrySet()) {
String person = entry.getKey();
Double rating = entry.getValue();
total += rating;
}
average = total / ratings.size();
ratingsDisplay.setTitleText(roundTo2Decimals(average) + "");
public double roundTo2Decimals(double val) {
DecimalFormat df2 = new DecimalFormat("###.##");
return Double.valueOf(df2.format(val)); <== this is where the crash happens
}
Run Code Online (Sandbox Code Playgroud)
错误日志:
0java.lang.NumberFormatException: Invalid double: "?"
1at java.lang.StringToReal.invalidReal(StringToReal.java:63)
2at java.lang.StringToReal.initialParse(StringToReal.java:164)
3at java.lang.StringToReal.parseDouble(StringToReal.java:282)
4at java.lang.Double.parseDouble(Double.java:301)
5at java.lang.Double.valueOf(Double.java:338)
6at com.ducky.flipplanet.ToonViewer.roundTo2Decimals(ToonViewer.java:2750)
7at com.ducky.flipplanet.ToonViewer.calculateAndShowRatings(ToonViewer.java:2919)
8at …Run Code Online (Sandbox Code Playgroud) 当我遇到这个分号时,我正在阅读一个开源代码.我最初认为这是一个错误,但事实并非如此.
在下面的for循环的开放括号之后,分号的功能是什么?
if (nCount > 0){
for(; nCount > 0; nCount--){
if (mBitmaplist[nCount - 1] != null){
mBitmaplist[nCount - 1].recycle();
mBitmaplist[nCount - 1] = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)