四舍五入到最接近的整数......我是在作弊还是绰绰有余

Kev*_*n M 12 java

基本上,如果生成的数字是2.3,那么如果我减去.5那么它将是1.8但是舍入函数将使它成为2,这就是我想要的.或者,如果答案是2.99999并且我减去.5,那么答案是2.49999,它应该向下舍入到2,这就是我想要的.我的问题是如果答案是2均匀并且我减去.5,答案现在是1.5,所以它仍然会向上舍入到2.

temp1_1= Math.round(temp2_2/(360/temp_value)-.5);
Run Code Online (Sandbox Code Playgroud)

这是我的代码行.

Pet*_*nov 40

已经有了这样做的功能.它被称为地板:

double d = Math.floor(2.9999) //result: 2.0
Run Code Online (Sandbox Code Playgroud)


Pet*_*rey 21

更简单,更快捷

double d = 2.99999999;
long l = (long) d; // truncate to a whole number.
Run Code Online (Sandbox Code Playgroud)

这将向0舍入.Math.floor()向负无穷大舍入.Math.round(x - 0.5)也向负无穷大舍入.

  • 我相信这会使负数*上升*. (9认同)

小智 13

每个人总是想要使用花哨的功能,但忘记了不起眼的模数.我的解决方案

number = x-(x%1);
Run Code Online (Sandbox Code Playgroud)

将除法的余数减去1,因此x = 2.999将= 2,3.111将= 3,依此类推.关于这一点很酷的事情是,只要将1改为任何你喜欢的东西,你就可以将任何东西都缩小.

  • 在我的例子中,我需要四舍五入到最接近的千位,所以你的解决方案是一个更优雅的解决方案:`rounded = value - value % 1000`。好的。 (2认同)