四舍五入到最近的一半(不是最近的整数)

时间:2013-05-29 06:32:13

标签: java double rounding

我需要将一个双舍入到最接近的.5。我想要以.0结尾的数字结束。

我已经搜索了一下,但似乎每个人都想要舍入到最接近的多个 .5而不是最近的一半而不是整数。我尝试将.5除以四舍五入,并乘以.5,但这仍然是.5的倍数。在此之后添加或减去.5并不总是围绕它应该去的数字(你应该在你应该减去的时候添加)。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:11)

我认为Math.round(num * 2) / 2.0f应该解决四舍五入到最接近的半问题:

Math.round(3.9 * 2) / 2.0f == 8 / 2.0f = 4.0
Math.round(3.6 * 2) / 2.0f == 7 / 2.0f = 3.5
Math.round(3.1 * 2) / 2.0f == 6 / 2.0f = 3.0

答案 1 :(得分:10)

减去,舍入并添加......

Math.round(value - 0.5) + 0.5

问题评论中提到的另一种工作方式:

Math.floor(value) + 0.5

答案 2 :(得分:3)

四舍五入到任何分数f:

double f = 0.5;
double rounded = f * Math.round(x/f);