Java模算子

Java模算子,java,modulo,Java,Modulo,可能重复: 在java中使用模运算符时,我没有得到期望得到的数字 以下是我正在做的: double input = 5.59; System.out.println("Output: " + (input % 2)); 我希望看到1.59作为结果,但它打印出1.5899999999。有什么线索可以解释为什么会这样吗?这是因为浮点不准确 如果要将数字四舍五入,需要使用如下格式: double input = 5.59; System.out.format("Output: %.2f%n", (

可能重复:

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

以下是我正在做的:

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

我希望看到1.59作为结果,但它打印出1.5899999999。有什么线索可以解释为什么会这样吗?

这是因为浮点不准确

如果要将数字四舍五入,需要使用如下格式:

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


希望这有帮助

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

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

它将打印输出:1.59

这是因为浮点不准确,好的,这是一个多重复制(IEEE754,浮点等)。让我们花点时间找到它……谢谢@josiahester,我会仔细阅读的。你知道我能解决这个问题的方法吗。我需要它为我的11年级编程课做一个改变计划。另一个类似的问题:在编辑后提供的答案可能会帮助你+1来描述。谢谢soo Morge:P我试着让这个工作了一段时间。