web-dev-qa-db-ja.com

Javaで整数を*切り捨て*する方法は?

Javaで整数を1000に最も近い値に切り捨てたいと思います。

したがって、たとえば:

  • 13,623ラウンドから13,000
  • 18,999ラウンドから18,000
21
Redandwhite

単に1000で割ると、興味のない数字が失われ、1000を掛けます。

i = i/1000 * 1000

または、次のことも試すことができます。

i = i - (i % 1000)
52
abyx

あなたは数を1000で割ることができます、適用 Math.floor 、1000を掛けて、整数にキャストバックします。

12
Poindexter
int i = Math.floorDiv(-13623, 1000) * 1000 
//i => -14000

上記のコードは、除数(この例では1000)が正であると仮定して、常に(負の無限大に向かって)切り捨てられます。

もう1つの答え(i = i/1000 * 1000)は、iが正の場合は切り捨てられますが、iが負の場合は切り捨てられます。

-13623 / 1000 * 1000 == -13000

longの精度が原因でMath.floorDivメソッドが失敗する可能性がある非常に大きな数で機能する、doubles用のMath.floorのバージョンもあります。

floorDivsと一緒に使用するMath.floorModメソッドもあります。これにより、少し短くすることができます。

int i = -13623;
i -= Math.floorMod(i, 1000);
//i => -14000
0
Alex