java - 非常不寻常的舍入

标签 java math rounding

您是否曾经进行过这样的四舍五入:

  • [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

最佳答案

可以通过以下方式找到您要查找的号码

  1. 将您的数字乘以 20。
  2. 计算您的数字的下限。
  3. 将您的数字除以 20。
  4. 添加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/

相关文章:

java - Maven 阴影插件使用

Python - 如何找到两个向量之间的相关性?

math - 是否有用于在非标准分析中进行计算的超真实数据类型实现?

mysql - 数据库中的浮点值转换

java - 如何在 Joda-Time 中总结岁月

java - 重启后Hbase数据被删除

java - 选择一个好的排序算法

java - 一个简单的java客户端服务器程序

javascript - 电源列表的最后一位

javascript - 不四舍五入到五位数的 toFixed 方法