JavaでDoubleをLongに変換する
1. 概要
このチュートリアルでは、Javaでdoubleからlongに変換するさまざまな方法について説明します。
2. 型キャストの使用
キャスト演算子を使用して、doubleをlongにキャストする簡単な方法を確認しましょう。
Assert.assertEquals(9999, (long) 9999.999);
(long)キャスト演算子を double 値9999.999に適用すると、9999になります。
精度が低下しているため、これはナローイングプリミティブ変換です。 doubleをlongにキャストすると、小数点を除いて結果は同じままになります。
3. Double.longValueを使用する
それでは、Doubleの組み込みメソッドlongValue を調べて、doubleをlongに変換してみましょう。
Assert.assertEquals(9999, Double.valueOf(9999.999).longValue());
ご覧のとおり、longValueメソッドをdouble値9999.999に適用すると、9999が生成されます。 内部的には、longValueメソッドは単純なキャストを実行しています。
4. Mathメソッドの使用
最後に、 Mathクラスのround、ceil、floor メソッドを使用して、doubleをlongに変換する方法を見てみましょう。
まず確認しましょう
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 の正反対を行います
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.ceilとMath.roundはどちらもdouble値を返しますが、どちらの場合も、返される値は
5. 結論
この記事では、Javaでdoubleをlongに変換するさまざまな方法について説明しました。 ミッションクリティカルなコードに適用する前に、各メソッドがどのように動作するかを理解しておくことをお勧めします。
このチュートリアルの完全なソースコードは、GitHubでから入手できます。