在Java中为整数舍入2个小数位

时间:2013-05-06 22:21:59

标签: java

我有以下问题,例如,如果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;
}

先谢谢。

4 个答案:

答案 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);

阅读该函数的文档以发现有关格式字符串的更多信息。