我有以下问题,例如,如果zzi = 95,则myNum将正确显示为32.33,正如我想要的那样,有两个小数位。
但是如果zzi = 94,myNum将显示为32.0而不是32.00
如何将其显示为32.00?
float xFunction(int zzi) {
float myNum = (zzi + 2);
myNum = myNum / 3;
int precision = 100; // keep 4 digits
myNum = (float) (Math.floor(myNum * precision + .5) / precision);
return myNum;
}
先谢谢。
答案 0 :(得分:3)
您的问题不在于舍入数字,而在于围绕显示或数字的字符串表示。解决方案:
new DecimalFormat("0.00");
String.format("%.2f", myNumber);
new java.util.Formatter("%.2f", myNumber);
System.out.printf("%.2f", myNumber);
注意:尽可能避免使用float,而是更喜欢使用double,这样可以很少的成本大大提高数值精度。对于财务计算,请使用两者,而是选择整数计算或使用BigDecimal。
答案 1 :(得分:0)
您可以使用DecimalFormat
System.out.println(new DecimalFormat("0.00").format(xFunction(94)));
答案 2 :(得分:0)
记住:
1)打印显示两位小数的数字与舍入实际的值非常不同。换句话说,“表示”!=实际值。
2)浮点值总是不精确。即使进行四舍五入,您也可能获得“确切的价值”。
话虽如此,最简单的方法是:
float myNum = ((123.456 * 100.0) + .5) / 100.0;
new DecimalFormat("#.##").format(myNum );
答案 3 :(得分:0)
您应该使用打印功能。我假设您使用的是System.out.println
:将其替换为
System.out.format("%.2f", numberToPrint);
阅读该函数的文档以发现有关格式字符串的更多信息。