Javaの丸め誤差

WBOY
リリース: 2023-08-19 15:05:18
転載
685 人が閲覧しました

Javaの丸め誤差

コードを書いているとき、私たちは皆、オーバーフロー エラーや構文エラーなどのエラーにつながるさまざまな間違いを犯します。丸め誤差は、誤った解決策をもたらす可能性がある一般的なエラーの 1 つです。与えられた数学的問題。一般に、このエラーは浮動小数点数を扱うときに発生します。

この記事では、この問題の原因を調査し、このエラーを取り除く方法を見つけようとします。

丸め誤差

浮動小数点型

これらは実数とも呼ばれ、計算に小数値が必要な場合に使用されます。小数点付きの数値を表します。たとえば、1/5 の結果 (0.2) を表現するには、サインとコサインの結果にも小数点が必要です。

Java には 2 種類の浮動小数点数があります -

  • 浮動小数点型 - 最大 32 ビットの単精度値を格納できます。 「float」キーワードを使用して宣言します。

  • Double -そのサイズは float より大きく、最大 64 ビットの倍精度値を格納できます。 'double' キーワードを使用して宣言されます。

丸め誤差が発生する可能性がある例について説明し、その原因を理解し、それを正しく処理するための解決策を提供します。

例 1

リーリー ###出力### リーリー

上記のコードでは、初めて追加したとき、'data2' の期待値は 0.30 ですが、出力結果は間違っています。ただし、別の同様の加算演算を実行すると、正確な結果が得られます。

エラーを示す別の例を見てみましょう。

例 2

の中国語訳は次のとおりです:

例 2

リーリー ###出力### リーリー

予期される出力は 4.808062 ですが、ここでは間違った出力が得られます。

エラーの理由

「IEEE 754」は、浮動小数点数の実装時に Java が準拠する標準です。その「丸め」ルールによると、仮数部の値が 23 ビットより大きい場合、23 番目のビットに 1 を加えて丸めます。値。ここで、仮数は小数桁の 2 進表現です。

これが、異なる値が得られる理由です。

エラーの解決方法

この丸め誤差を回避するために、次の方法があります -

BigDecimal
    - これは、float や double などの浮動小数点数の代わりに使用できるクラスであり、float および double データ型が提供するすべての通常の演算を実行できます。 、四則演算、比較、丸めなどの演算を正確な精度で処理できます。
  • 次の例は、これを使用して正確な結果を生成する方法を示しています。 例 3

    リーリー ###出力### リーリー
  • 例 1 では、2 つの値を追加するときにエラーが発生しました。上の例では同じ値を使用しましたが、今回は正しい結果が得られました。

Math.round()

-これはクラス「Math」の静的メソッドです。浮動小数点値を引数として受け取り、最も近い整数値を返します。クラス名を使用してそれを呼び出します。

    以下の例は、プログラムでの使用法を示しています。
  • 例 4 リーリー ###出力### リーリー ###結論### 丸めエラーはコンパイル時エラーでも実行時エラーでもありません。Java コンパイラはそれを検出できません。これが、プログラマがこれらのエラーに特別な注意を払う必要がある理由です。そうしないと、間違った結果が得られます。この記事では、その理由について説明し、この丸め誤差を克服するいくつかの方法も提案しました。

以上がJavaの丸め誤差の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート