ホームページ >Java >&#&チュートリアル >BigDecimal とは何ですか? BigDecimal のインスタンスを作成する

BigDecimal とは何ですか? BigDecimal のインスタンスを作成する

零下一度
零下一度オリジナル
2017-06-25 10:40:304142ブラウズ

float 型と double 型は主に科学計算と工学計算用に設計されており、2 進浮動小数点演算を実行し、広範囲の値に対してより正確な近似計算を提供するように慎重に設計されています。ただし、完全に正確な結果が得られるわけではないため、正確な結果が必要な場合には使用しないでください。通常、ビジネス計算では、高精度要件で値を計算するために BigDecimal が必要になることがよくあります。たとえば、

  0.07 + 0.020.58 - 0.421.005 * 10015.1 / 1000

どのような環境であっても、浮動小数点数を直接出力する場合、コードをバイナリマシンコードに変換して機械が認識できるようにする必要があります。浮動小数点数を処理する場合、計算後に精度が失われる可能性があり、その場合は計算に BigDecimal が必要になります。

1. BigDecimal を作成します

BigDecimal には、倍精度浮動小数点数をパラメータとして受け取るコンストラクターがありますが、実際には、浮動小数点数を計算に渡すと、精度が失われます。ただし、文字列を渡すと正確な結果が得られることがわかります。また、BigDecimal.valueOf(double val を使用しても正確な結果が得られます) BigDecimal.valueOf(double val) のソースコードは以下の通りです

  =  BigDecimal(1.005=  BigDecimal(100=  BigDecimal("1.005"=  BigDecimal("100"100.49999999999998934185896359849721193313598632812500
100.500

このメソッドは、まずパラメーターを String 型に変換し、次に String 型のパラメーターを持つ構築パラメーターを呼び出します。そのため、BigDecimal を使用する場合、正確な結果を保証するには、新しい BigDecimal(String val) または BigDecimal.valueof(double val) を使用してみてください

2.compareTo

BigDecimal のサイズを比較するには、compareTo() を使用します。

public static BigDecimal valueOf(double val) {// Reminder: a zero double returns '0.0', so we cannot fastpath// to use the constant ZERO.  This might be important enough to// justify a factory approach, a cache, or a few private// constants, later.return new BigDecimal(Double.toString(val));
    }

BigDecimal.compareTo(BigDecimal val) BigDecimal が val より大きい場合は 1 を返し、 BigDecimal が val より小さい場合は -1 を返します。 BigDecimal が次と等しい場合値 0 。

以上がBigDecimal とは何ですか? BigDecimal のインスタンスを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。