3

可能重复:
浮点不准确示例

在 java 中使用模运算符时,我没有得到我期望得到的数字。

这是我在做什么:

double input = 5.59;
System.out.println("Output: " + (input % 2));

我希望看到 1.59 作为结果,但它打印出 1.5899999999999999。关于为什么会这样的任何线索?

4

2 回答 2

5

这来自浮点不准确性,这是一个很好的 SO 答案,准确地解释了正在发生的事情。

如果您希望它四舍五入您需要使用如下格式的数字:

double input = 5.59;
System.out.format("Output: %.2f%n", (input % 2));
  • “%”告诉格式化程序用第一个数字参数替换自己。您可以根据需要添加任意数量的这些。
  • “.2”告诉格式化程序将数字格式化为小数点后两位。
  • “f”只是告诉格式化程序它是一个浮点数。
  • “%n”是适用于运行应用程序的平台的换行符。您应该始终使用“%n”,而不是“\n”。

这是所有这一切的一些很好的文档。

希望这可以帮助!

于 2012-10-09T17:40:39.180 回答
1

这是因为 Double 的精度。您需要对其进行格式化以实现所需的输出。

double input = 5.59;
System.out.println("Output: " + new DecimalFormat("00.00").format(input % 2));

它将打印输出:1.59

于 2012-10-09T17:46:57.967 回答