百分比运算符和浮点值

Percent Operator and Floating Point Values

当我运行代码

System.out.println(12%5)

它总是毫无例外地打印出 2。但是,如果它尝试这样做:

System.out.println(2%0.1)

它打印出 0.0999999999999999。我试图使用 % 运算符将数字向下舍入到给定的间隔,但如果间隔是小数,它总是会像这样出现故障。存在哪些替代方案? 谢谢

编辑:我用来四舍五入到最近间隔的代码是这样的:

value -= value%0.1;

如果值等于 0.567,则值 %0.1 将为 0.067,并且 0.567-0.067 = 0.5。

另一种选择是 Math.round and/or Math.floor。如果您真的想四舍五入到最近的间隔,请使用 Math.round( num / interval ) * interval。如果您想向下舍入到下一个较低的间隔,请使用 Math.floor( num / interval ) * interval.

https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#round(double)