百分比运算符和浮点值
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)
当我运行代码
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)