当我运行代码时
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。
答案 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)