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

np9*_*765 11 java double rounding

我需要将一个双舍入到最接近的.5.我希望在.0结束的一个数字来结束.

我已搜索周围有点,但似乎每个人都想四舍五入到最接近的倍数为0.5,而不仅仅是最近的一半,但不是全部.我尝试将.5除以四舍五入,并乘以.5,但这仍然是.5的倍数.在此之后添加或减去.5并不总是围绕它应该去的数字(当你应该减去时可以添加).

任何帮助将不胜感激.

Mik*_*keL 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
Run Code Online (Sandbox Code Playgroud)


mau*_*tto 10

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

Math.round(value - 0.5) + 0.5
Run Code Online (Sandbox Code Playgroud)

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

Math.floor(value) + 0.5
Run Code Online (Sandbox Code Playgroud)

  • 这是错误的圆算法.Math.floor(3.1)+ 0.5会给你3.5而不是3. (5认同)
  • 正是他所要求的. (5认同)