Numberオブジェクト(Java)の配列を取得できるSUM()メソッドを記述する必要があります。したがって、いくつかのShortオブジェクト、次に2つのFloat、次にBigDecimalがあります。最も正確な結果を得るために、Java Numberオブジェクトのセットを追加するにはどうすればよいですか?
すべてがByte/Short/Integer/Longの場合、返される値はLongでなければなりません。
すべてがByte/Short/Integer/Long/Float/Doubleの場合、返される値はDoubleである必要があります。
上記のミックスにBigDecimalがある場合、結果はBigDecimalでなければなりません。 BigIntegerがそこにある場合、各BigIntegerが扱う数値の大きさが異なるため、どのBigIntegerがどのように扱われるかはわかりません。
現在のところ、long(すべてのByte/Short/Integer/Long)、double(すべてのFloat/Double)およびbigDecimalの合計を収集しています。その後、最後に使用されているものを追加し(2つのブール値を追跡している)、それを返します。
動作しますが、きれいではありません。簡単な方法がありますか? 2つのNumberオブジェクトを追加する方法は、適切なNumberオブジェクトを返しますか?
あなたが言うすべてのタイプは、正確に「BigDecimal」として表現できます。すべての入力を 'BigDecimal'に変換して追加するだけです。正確な答えではなく、正確に正しい答えになります。 –
これを行うための明確な方法はありません。 Javaは、あなたがしようとしているような異なる 'Number'型を混在させるつもりはありません。 –
@PaulBoddington - 細部に入ることなく、Long(小数点なし)またはDouble(BigDecimalから変換する必要はありません)であることがわかったら、できることがあります。さらに、私たちは速いパフォーマンスを望んでおり、ほとんどの時間はすべて長いか2倍です。 –