您是否曾经进行过这样的四舍五入:
- [0.95,1) 四舍五入为 1
- [0.90,0.95) 四舍五入为 0.95
- [0.85,0.90) 四舍五入为 0.90
- [0.80,0.85) 四舍五入为 0.85
我尝试这样做:
double rounded = Math.round(x * 20.0) / 20.0;
但是它的舍入有点不同,例如它把 0.91 舍入到 0.90,而我更需要它把 0.91 舍入到 0.95
最佳答案
可以通过以下方式找到您要查找的号码
- 将您的数字乘以 20。
- 计算您的数字的下限。
- 将您的数字除以 20。
- 添加0.05
例如, ⌊ 0.95 * 20 ⌋/20 + 0.05 = ⌊ 19 ⌋/20 + 0.05 = 0.95 + 0.05 = 1.00。
在 Java 中:
double result = Math.floor(x * 20.0) / 20.0 + 0.05;
希望这有帮助!
关于java - 非常不寻常的舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271665/