JavaScript 関数における小数の問題の処理
JavaScript 関数を作成するとき、特に除算演算を実行するときに、10 進数に関連する問題が発生することがよくあります。出力としてクリーンな整数が必要な開発者にとって、これらの小数結果の管理方法を理解することは不可欠です。
このガイドでは、最初の計算に小数が含まれるかどうかに関係なく、戻り値が整数になるように JavaScript 関数を変更する方法を説明します。これは、比率や平均を求めるなど、計算を伴う関数を扱うときに多くの初心者が直面する課題です。
この問題は、多くの場合、整数の結果が得られない数値の除算によって発生します。たとえば、教育者ごとの生徒の平均を計算すると小数が返されることがありますが、状況によってはこれが望ましくない場合があります。これらの小数点を削除または四捨五入することは、出力の読みやすさと使いやすさを向上させるための一般的なタスクです。
次のような JavaScript の組み込み数学関数を使用する方法のプロセスを順を追って説明します。 Math.round()、 Math.floor()、 そして Math.ceil()、小数点を削除して整数を返します。これを終えると、特定のニーズに合わせて関数の戻り値をフォーマットする方法が理解できるようになります。
指示 | 使用例 |
---|---|
Math.round() | このコマンドは、10 進数を最も近い整数に丸めます。これは、除算の結果を浮動小数点数ではなく整数にする必要がある場合に便利です。この例では、Math.round(13.666) は 14 を返します。 |
Math.floor() | 小数部分が 0.5 より大きい場合でも、小数を最も近い整数に切り捨てます。 Math.floor(13.666) では、結果は 13 となり、事実上小数部分が切り捨てられます。 |
Math.ceil() | このコマンドは、小数部分に関係なく、10 進数を次の整数に切り上げます。たとえば、Math.ceil(13.1) の結果は 14 になります。 |
アサート.strictEqual() | Node.js で使用されるこのメソッドは、2 つの値が厳密に等しいかどうかをチェックします。これは、関数が期待した結果を返すかどうかを検証するために単体テストでよく使用されます。このスクリプトでは、assert.strictEqual(studentsPerAdmin(41,1,2), 14) は、これらの引数を指定して呼び出されたときに関数が 14 を返すかどうかをチェックします。 |
コンソール.log() | これは、メッセージまたは値をブラウザ コンソールに出力するデバッグ ツールです。これは、関数の結果をユーザーに伝えるための console.log('Unfortunately this class...') のような動的メッセージを表示する場合に特に便利です。 |
必要とする() | このコマンドは、Node.js でモジュールまたはライブラリをインポートするために使用されます。この例では、 constassert = require('assert'); となります。組み込みを含めるために使用されます アサート 単体テストを実行するためのモジュール。 |
テンプレートリテラル | バックティック (`) で囲まれたテンプレート リテラルを使用すると、文字列内に式を埋め込むことができます。私たちの関数では、「平均 ${average} 人の学生がいます」は平均値を文字列に動的に挿入します。 |
除算演算子 (/) | この演算子は、ある数値を別の数値で除算します。生徒 / (教師 + ヘルパー) では、生徒の数を教師とヘルパーの合計で割って、教育者あたりの平均生徒数を計算します。 |
小数点以下を削除するための JavaScript メソッドを理解する
次のように、小数を返す JavaScript 関数を扱う場合、 学生ごとの管理者 関数を使用するには、結果を変更して整数を取得する方法を理解することが不可欠です。この関数では、教師あたりの生徒の平均数は、生徒の数を教師とヘルパーの合計で割ることによって計算されます。ただし、除算の結果は 10 進数値になることが多いため、これらの結果を処理するにはさまざまな数学的手法が必要です。課題は、教師ごとに何人の生徒が割り当てられているかを報告する場合など、整数のみが有用な状況に合わせて小数部分を四捨五入または切り捨てすることです。
この例で使用される最初のアプローチは次のとおりです。 Math.round()。このメソッドは、10 進数を最も近い整数に丸めます。たとえば、平均が 13.666 の場合、 数学ラウンド 小数点が 0.5 より大きいため、14 が返されます。この方法は、数値を単純化しながら精度を維持したい場合に便利です。別のアプローチは、 Math.floor()、常に数値が切り捨てられます。同じ例で10進数値に関わらず13を返す場合など、小数部分を完全に切り捨てたい場合に適用されます。
一方で、 Math.ceil() ~とは逆の目的を果たす Math.floor()、数値は常に最も近い整数に切り上げられます。この方法は、値が整数部分を下回らないようにしたい場合に最適です。たとえば、平均が 13.1 の場合、 Math.ceil() 小数部分が非常に小さい場合でも、14 が返されます。これらの方法により、計算の特定のニーズに応じた柔軟性が得られます。目的が近似値に四捨五入するか、切り捨て、または切り上げであるかに関係なく、各関数は明確な目的を果たします。
さらに、 アサート.strictEqual() 単体テストでは、関数が期待どおりに動作することを確認します。このコマンドは、関数の出力がさまざまなテスト ケースで予想される結果と一致するかどうかを確認するために重要です。これは安全装置として機能し、開発者が変更により機能が損なわれるかどうかを迅速に確認できるようにします。と組み合わせる 必要とする() 必要なモジュールをインポートするために、これらのテストにより検証層が追加され、実稼働環境でのコードの信頼性が保証されます。これらの手法を組み込むことで、コードが正確になるだけでなく、徹底的にテストされ、さまざまな使用シナリオに対応できるようになります。
JavaScript 関数の戻り値から小数点を削除するための複数のアプローチ
フロントエンド実装での JavaScript の使用
// Solution 1: Using Math.round() to round to the nearest integer
function studentsPerAdmin(students, teachers, helpers) {
const average = students / (teachers + helpers);
const roundedAverage = Math.round(average);
if (roundedAverage > 10) {
console.log(`There are on average ${roundedAverage} students for each educator.`);
} else {
console.log('Unfortunately this class will be cancelled due to not having enough students enrolled.');
}
return roundedAverage;
}
studentsPerAdmin(41, 1, 2); // Result: 14 students for each educator
JavaScript を使用したさまざまな方法で小数を処理する
JavaScript とさまざまな数学メソッドの使用
// Solution 2: Using Math.floor() to always round down
function studentsPerAdmin(students, teachers, helpers) {
const average = students / (teachers + helpers);
const flooredAverage = Math.floor(average);
if (flooredAverage > 10) {
console.log(`There are on average ${flooredAverage} students for each educator.`);
} else {
console.log('Unfortunately this class will be cancelled due to not having enough students enrolled.');
}
return flooredAverage;
}
studentsPerAdmin(41, 1, 2); // Result: 13 students for each educator
JavaScript 関数の戻り値で整数を保証する
JavaScript と Math.ceil() を使用した切り上げ
// Solution 3: Using Math.ceil() to always round up
function studentsPerAdmin(students, teachers, helpers) {
const average = students / (teachers + helpers);
const ceiledAverage = Math.ceil(average);
if (ceiledAverage > 10) {
console.log(`There are on average ${ceiledAverage} students for each educator.`);
} else {
console.log('Unfortunately this class will be cancelled due to not having enough students enrolled.');
}
return ceiledAverage;
}
studentsPerAdmin(41, 1, 2); // Result: 14 students for each educator
さまざまな環境での有効性をチェックするためのテスト スクリプト
Node.js でのバックエンド検証のための単体テスト
// Unit Test for verifying all solutions
const assert = require('assert');
assert.strictEqual(studentsPerAdmin(41, 1, 2), 14); // Using Math.round()
assert.strictEqual(studentsPerAdmin(30, 1, 2), 10); // Using Math.floor()
assert.strictEqual(studentsPerAdmin(35, 1, 2), 12); // Using Math.ceil()
console.log('All tests passed!');
複雑な JavaScript シナリオでの小数の処理
小数点以下の四捨五入は JavaScript では一般的なニーズですが、小数点以下の桁の管理により詳細な制御が必要になるシナリオもあります。最も重要なテクニックの 1 つは、 toFixed()。この方法では、一貫した表示形式を確保しながら、数値を最も近い値に四捨五入して、必要な小数点以下の桁数を指定できます。例えば、 number.toFixed(2) は常に小数点以下 2 桁の数値を返すため、通貨計算や科学的測定など、精度が重要な状況に最適です。
もう 1 つの重要な概念は、JavaScript が浮動小数点演算をどのように処理するかです。数値がメモリに格納される方法により、特に 2 つの浮動小数点数を比較する場合、10 進数の演算により予期しない結果が生じることがあります。例えば、 0.1 + 0.2 正確には等しくありません 0.3 JavaScript では、特定の計算で問題が発生する可能性があります。これらの微妙な違いを理解すると、特に財務計算や統計計算を扱う場合に、コード内のエラーを回避するのに役立ちます。
さらに、四捨五入せずに小数点を完全に削除する必要がある場合は、次のようなビット単位の演算子を使用できます。 ~~ (二重チルダ)、数値の小数部分を効果的に切り捨てます。このアプローチは、ビット単位の演算子がプロセス内で数値を整数に変換するため機能します。例えば、 ~~13.666 結果として ~~13.99。この方法はあまり一般的には使用されませんが、パフォーマンスが重要な場合に小数点以下を切り捨てるという目標を迅速に達成する方法を提供します。
JavaScript での小数の管理に関するよくある質問
- JavaScript で数値を最も近い整数に四捨五入するにはどうすればよいですか?
- 使用できます Math.round() 数値を最も近い整数に四捨五入します。例えば、 Math.round(13.6) 返品 13。
- JavaScript で小数点以下を常に切り捨てるにはどうすればよいですか?
- 常に切り捨てるには、次を使用できます Math.floor()。例えば、 Math.floor(13.9) 戻ります ~~13.99、小数部分は無視されます。
- 四捨五入せずに小数点を削除する最良の方法は何ですか?
- ビット演算子の使用 ~~ は、四捨五入せずに小数点を削除する効率的な方法です。例えば、 13 結果として ~~13.99。
- JavaScript で小数点以下の桁数を制御できますか?
- はい、使用できます toFixed() をクリックして、小数点以下の桁数を指定します。例えば、 13.666.toFixed(2) 戻ります 13.67。
- なぜそうなるのか 0.1 + 0.2 等しくない 0.3 JavaScriptで?
- これは、JavaScript が浮動小数点演算を処理する方法に起因します。数値は、場合によっては小さな精度誤差を引き起こす方法で保存されます。
JavaScript での小数の管理に関する最終的な考え方
JavaScript を使用する場合、特に整数の結果を必要とする関数で、小数を扱うと混乱が生じることがあります。などの丸め関数を利用する Math.round()、またはビットごとの演算子を使用した小数切り捨ては、開発者にこの問題を効率的に解決するための柔軟なツールを提供します。
これらの JavaScript メソッドをマスターすると、数値の表示方法を制御し、関数が明確で正確な結果を返すことができるようになります。切り上げ、切り捨て、切り捨てのいずれを行う場合でも、適切な方法を選択することで、コードの正確さと読みやすさが確保されます。
出典と参考文献
- の使用法について詳しく説明します JavaScript 数学関数 のように Math.round()、 Math.floor()、 そして Math.ceil() JavaScript の小数点以下の四捨五入に使用します。 MDN Web ドキュメント - JavaScript の数学
- の動作を説明するために使用されるリファレンス 浮動小数点演算 JavaScript の説明と、一部の計算で小数精度が重要になる理由について説明します。 浮動小数点ガイド
- JavaScript で丸めずに 10 進数値を切り捨てるためのビット演算子の使用について説明します。 JavaScript.info - ビット単位の演算子