如何在Java中舍入*整数?

如何在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)

我想在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)为正,上述代码将始终向下取整(接近负无穷大)

另一个答案(
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不指定负数的行为。当被问及向下舍入或向零舍入时,她说:“实际上我的意思是向下舍入”,但不是特别清楚。