1. 概要

このチュートリアルでは、Javaでdoubleからlongに変換するさまざまな方法について説明します。

2. 型キャストの使用

キャスト演算子を使用して、doublelongにキャストする簡単な方法を確認しましょう。

Assert.assertEquals(9999, (long) 9999.999);

(long)キャスト演算子を double 値9999.999に適用すると、9999になります。

精度が低下しているため、これはナローイングプリミティブ変換です。 doublelongにキャストすると、小数点を除いて結果は同じままになります。

3. Double.longValueを使用する

それでは、Doubleの組み込みメソッドlongValue を調べて、doublelongに変換してみましょう。

Assert.assertEquals(9999, Double.valueOf(9999.999).longValue());

ご覧のとおり、longValueメソッドをdouble値9999.999に適用すると、9999が生成されます。 内部的には、longValueメソッドは単純なキャストを実行しています。

4. Mathメソッドの使用

最後に、 Mathクラスのround、ceil、floor メソッドを使用して、doublelongに変換する方法を見てみましょう。

まず確認しましょう Math.round。 これにより、引数に最も近い値が生成されます。

Assert.assertEquals(9999, Math.round(9999.0));
Assert.assertEquals(9999, Math.round(9999.444));
Assert.assertEquals(10000, Math.round(9999.999));

次に、Math。 ceil は、引数以上の最小値を生成します。

Assert.assertEquals(9999, Math.ceil(9999.0), 0);
Assert.assertEquals(10000, Math.ceil(9999.444), 0);
Assert.assertEquals(10000, Math.ceil(9999.999), 0);

一方で、 Math.floor の正反対を行います Math.ceil。 これは、引数以下の最大値を返します。

Assert.assertEquals(9999, Math.floor(9999.0), 0);
Assert.assertEquals(9999, Math.floor(9999.444), 0);
Assert.assertEquals(9999, Math.floor(9999.999), 0);

Math.ceilMath.roundはどちらもdouble値を返しますが、どちらの場合も、返される値はlong[と同等です。 X155X]値。

5. 結論

この記事では、Javaでdoublelongに変換するさまざまな方法について説明しました。 ミッションクリティカルなコードに適用する前に、各メソッドがどのように動作するかを理解しておくことをお勧めします。

このチュートリアルの完全なソースコードは、GitHubから入手できます。