如何在Java中舍入*整数?
我想在Java中将整数舍入到最接近的1000 例如:如何在Java中舍入*整数?,java,numbers,Java,Numbers,我想在Java中将整数舍入到最接近的1000 例如: 13623轮至13000轮 18999轮到18000轮 等 只需除以1000就可以删除您不感兴趣的数字,然后乘以1000: i = i/1000 * 1000 或者,您也可以尝试: i = i - (i % 1000) 您可以将该数字除以1000,然后应用,再乘以1000,再转换回整数 int i = Math.floorDiv(-13623, 1000) * 1000 //i => -14000 假设除数(本例中为1000)
- 13623轮至13000轮
- 18999轮到18000轮
- 等
i = i/1000 * 1000
或者,您也可以尝试:
i = i - (i % 1000)
您可以将该数字除以1000,然后应用,再乘以1000,再转换回整数
int i = Math.floorDiv(-13623, 1000) * 1000
//i => -14000
假设除数(本例中为1000)为正,上述代码将始终向下取整(接近负无穷大)
另一个答案(i=i/1000*1000
)在i
为正时向下舍入,但在i
为负时向上舍入
-13623 / 1000 * 1000 == -13000
还有一个版本的Math.floorDiv
用于long
s,它适用于非常大的数字,其中Math.floor
方法可能由于double
的精度而失败
还有一些Math.floorMod
方法可以与floorDiv
s配合使用,这些方法可以让您将其缩短一点:
int i = -13623;
i -= Math.floorMod(i, 1000);
//i => -14000
你是说四舍五入,还是四舍五入到零?当数字可以是负数时,这是有区别的。实际上我的意思是四舍五入,所以我只有几千个要处理,即43844个四舍五入到43000(不是44000)+1:我从来没有想过这样使用模数。此外,您还可以通过执行
i-=i%1000
(不知道右侧是否需要括号)来稍微缩短行,真的吗?我一直认为模数是一种获取数字单位的方法(I%10
)等等。关于缩短版本-这可能是我在代码中要做的,但希望这里清楚。@jasons请查看OP的描述,他想要这种行为(基本上想要“整千的数字”)OP不指定负数的行为。当被问及向下舍入或向零舍入时,她说:“实际上我的意思是向下舍入”,但不是特别清楚。