序文 コンピュータの数値は浮動小数点であるため、計算プロセス中に取得されるデータは通常正確ではなく、そのためいくつかの配列操作を行うのは面倒です。ここでは、正確な計算を行う方法を記述します。 1つ目は加算です(ここでは2つのデータの追加を例に挙げます) 関数 add(arg1, arg2) { arg1 = arg1.toString(), arg2 = arg2.toString(); // 入力データを文字列に変換します var arg1Arr = arg1.split("."), // 小数点から小数データを分割します arg2Arr = arg2.split("."), d1 = arg1Arr.length == 2 ? arg1Arr[1] : "", // 最初の数値の小数点の長さを取得します d2 = arg2Arr.length == 2 ? arg2Arr[1] : ""; // 2 番目の数値の小数点の長さを取得します var maxLen = Math.max(d1.length, d2.length); // 小数点の長さの大きい方の値を取得します var m = Math.pow(10, maxLen); // これは小数点の長さの 10 の累乗を表します。つまり、小数点の長さが 2 の場合、m の値は 100 です。小数点の長さが 3 の場合、m の値は 1000 です。わからない場合は、自分で API を調べてください var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen)); // 小数を整数に変換して加算し、乗算された 2 つの数値の倍数を削除して小数点を削除します。var d = arguments[2]; // ユーザーは、保持する小数点の長さを定義するために 3 番目のパラメーターを渡すかどうかを決定できます。return typeof d === "number" ? Number((result).toFixed(d)) : result; } 加算(12.123, 12) 次に減算を行います(減算は実際には配列に別の数の負数を加算するものなので、ロジックは加算と同じです) 関数sun(arg1, arg2) { add(arg1, -arg2) を返します } 次は掛け算です 関数mul(arg1, arg2) { var r1 = arg1.toString(), // 受信したデータを文字列に変換します r2 = arg2.toString(), m、結果値、d = 引数[2]; m = (r1.split(".")[1] ? r1.split(".")[1].length : 0) + (r2.split(".")[1] ? r2.split(".")[1].length : 0); // 2 つの数値の小数点以下の合計を取得します // 積のアルゴリズムは、小数点を削除し、整数の乗算を実行してから、10 の累乗をすべて削除します resultVal = Number(r1.replace(".", "")) * Number(r2.replace(".", "")) / Math.pow(10, m); 戻り値の型は d !== "number" ですか? Number(resultVal) : Number(resultVal.toFixed(parseInt(d))); } 最後に、引き算(割り算と掛け算は逆のプロセスなので、詳しく説明しません) 関数div(arg1, arg2) { var r1 = arg1.toString(), r2 = arg2.toString(), m、結果値、d = 引数[2]; m = (r2.split(".")[1] ? r2.split(".")[1].length : 0) - (r1.split(".")[1] ? r1.split(".")[1].length : 0); resultVal = Number(r1.replace(".", "")) / Number(r2.replace(".", "")) * Math.pow(10, m); 戻り値の型は d !== "number" ですか? Number(resultVal) : Number(resultVal.toFixed(parseInt(d))); } 要約する js での加算、減算、乗算、除算の正確な計算方法についての記事はこれで終わりです。js での加算、減算、乗算、除算の正確な計算に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。皆様が今後も 123WORDPRESS.COM を応援してくれることを願っています。 以下もご興味があるかもしれません:
|
<<: Node.js における非同期プログラミングの知識ポイントの詳細な説明
>>: JavaScript/TypeScript で同時リクエスト制御を実装するためのサンプルコード
コードをコピーコードは次のとおりです。 jQuery.cookie = 関数(名前、値、オプション)...
目次概要setTimeout() の確認スリープ関数の書き方シンプルな選択ループで実行されますか?要...
最近ディープラーニングを学ぶためにUbuntu+Python 3.6バージョンを使う必要があるため、...
背景基本概念CSS filterプロパティは、ぼかしや色の変化などのグラフィック効果を要素に適用して...
最近、古い RN プロジェクトを Xcode で実行すると、次のコード エラーが報告されました。 &...
操作効果 html <ヘッド> <メタ文字セット='UTF-8'&...
MySQL マルチテーブルクエリワークシートを追加する -- ユーザーテーブル (ユーザー) テーブ...
序文: Vue を使用する場合、多くの場合、カスタム プラグインをいくつか使用して記述し、 Vue....
Windows 環境と Linux 環境では結果が異なります。ウィンドウズステップ 1: Maven...
1. CPU使用率sar -p (一日中表示) sar -u 1 10 (1: 1秒ごと、10: 1...
この記事では、参考までにMySQL 5.7.24圧縮パッケージのインストールチュートリアルを紹介しま...
my.cnfは、MySQL の起動時に読み込まれる設定ファイルです。通常は MySQL インストー...
まず、コマンドラインまたはワークベンチを使用して MySQL にログインできず、「ユーザー '...
序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...
目次1. 変数意味のある名前を使う不必要なコンテキストを追加しないようにするハードコードされた値を避...