ホームページ >ウェブフロントエンド >フロントエンドQ&A >JavaScript 操作の精度が失われるとどうなりますか?
日常のプログラミングでは、さまざまな数値演算を処理するためにさまざまなプログラミング言語を使用することがよくありますが、その中でも間違いなく最も広く使用されているのは JavaScript です。ただし、複雑な数値計算を扱う場合、極端な場合には演算結果の精度が失われる状況に遭遇することがあります。では、なぜこのようなことが起こるのでしょうか?計算精度の低下を避けるにはどうすればよいでしょうか?
console.log(0.1 + 0.2); // 0.30000000000000004
バイナリでは 0.1 と 0.2 を正確に表現できないため、JavaScript ではこれらの加算結果が不正確になり、小数点の後に余分な数字が生じます。
2.1 計算に整数を使用する
複雑な演算を実行する場合、小数を整数に変換して計算し、最終的に結果を小数に変換できます。たとえば、次のコードでは、0.1 と 0.2 にそれぞれ 10 を掛け、その結果を加算し、最後に結果を 10 で除算できます。
console.log((0.1 * 10 + 0.2 * 10) / 10); // 0.3
2.2 toFixed() 関数を使用します。 JavaScript で
Number 型を使用します。 toFixed() メソッド。指定された精度で数値を 10 進数に変換できます (かっこ内の小数点以下の桁数は保持されます)。たとえば、次のコードでは、toFixed() 関数は小数点以下 2 桁を保持し、最終的に精度 0.30 の浮動小数点数を取得します。
console.log((0.1 + 0.2).toFixed(2)); // 0.30
2.3 精度の拡張
JavaScript の演算精度は、精度の低下を避けるために拡張できます。一般的なアプローチは、小数を整数に変換してから計算を実行することです。もう 1 つのオプションは、JavaScript で BigNumber ライブラリを使用することです。このライブラリは高精度の数値型を提供し、操作の精度を大幅に向上させることができます。たとえば、次のコードでは BigNumber ライブラリを使用して、演算精度の損失の問題を解決できます。
var BigNumber = require('bignumber.js'); var x = new BigNumber("0.1"); var y = new BigNumber("0.2"); console.log(x.plus(y).toString()); // "0.3"
この記事では、JavaScript での演算精度の損失の理由と一般的な回避方法をまとめています。複雑な数値計算を扱う場合は、特定の問題を注意深く分析し、精度の低下を避けるために適切な方法を採用し、プログラムの正確性を確保する必要があります。
以上がJavaScript 操作の精度が失われるとどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。