运算符百分比和浮点值

时间:2017-03-27 14:13:22

标签: java floating-point precision

当我运行代码时

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。

1 个答案:

答案 0 :(得分:0)

替代方案是Math.round和/或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)