JavaScriptの丸め番号のガイド

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-02-09 11:32:10577ブラウズ

A Guide to Rounding Numbers in JavaScript

この記事では、JavaScript数学的関数やその他の丸めの方法を10進の場所に使用するなど、JavaScriptのさまざまな数の丸め方法を調査します。また、数字を丸めたときに注意を払う必要がある問題を紹介します。

キーポイント

    javascriptは、
  • Math.roundMath.floorMath.ceilなど、数字を丸める方法をいくつか提供しています。 Math.trunc最寄りの整数に丸め、Math.round丸め、Math.floorラウンドアップ、Math.ceil数の分数部分を切り捨てます。 Math.trunc
  • javaScriptは、特定の小数またはかなりの数値に数値を丸めるための
  • およびNumber.toFixedメソッドを提供します。これらのメソッドは、丸い数字を文字列として返します。 Number.toPrecision
  • 負の数を扱う場合、
  • Math.roundMath.floorMath.ceilの動作は異なります。たとえば、Math.truncは負の数を次の最小整数まで丸めますが、Math.floorは分数部分を切り捨て、効果的に上方に丸めます。 Math.trunc
  • 数字のバイナリ表現のため、JavaScriptで正確な問題が発生する可能性があります。いくつかの10進数はバイナリで正確に表現することはできず、丸めエラーが発生します。
  • メソッドを使用して、32ビットの最も近い表現可能な数を見つけることができます。 Math.fround
  • 丸め方の選択は、特定のユースケースに依存します。
  • は、最も近い整数に丸めるための適切な一般的な選択ですが、Math.roundMath.floor、またはMath.ceilは、常に丸めまたは上昇したり、負の数に対処するのに適している場合があります。 Math.truncまたはNumber.toFixedは、特定の小数またはかなりの数への丸めに適用されます。 Number.toPrecision
javaScriptラウンド

オブジェクトは、整数値に数値を丸めるための多くの方法を提供します。

この例では、2つの最も重要な数学定数を使用して、さまざまなタイプの丸めを実証します:π(円の周囲の直径の比率)とE(「オリャー番号」とも呼ばれる自然対数のベース")。どちらの値も

オブジェクトのプロパティですが、それらをいくつかの変数に割り当てて、処理しやすくしましょう。 Math

Proのヒント:オブジェクト破壊を使用して、この割り当てを並べることもできます:Math

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>
これらの定数を定義したので、JavaScriptの数字を丸める方法をいくつか見てみましょう。

Math.roundを使用したJavaScriptのラウンド番号

最初に検討する方法は

です。これは最も簡単な選択です。最も近い整数に分数部分を持つ任意の数を丸めます。次のルールを使用します。数値が正確に2つの整数の間にある場合、それを切り上げます。たとえば、2.5は3まで丸めます。 Math.round この方法を使用するには、パラメーターとして丸められる数値を提供する必要があります。

数値を最も近い整数値に丸めたい場合は、

は非常に便利です。たとえば、3つのテストの平均スコアを計算している場合は、3つのスコアを追加して3つのスコアを分割します。これは整数を取得できない可能性があるため、
<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>

を使用して最も近い値に丸めることができます。 Math.round() Math.round()

<code class="language-javascript">const { PI, E } = Math;</code>
を使用して数字を丸めます

次に表示する方法はMath.floorです。これにより、値は常に下の整数まで丸くなります(名前は「フロア」に押し下げられることを意味します):

Math.floor

の一般的な使用法は、ランダムな整数を作成することです。丸めて、整数がゼロから始まり、各整数が同じように返される可能性があることを保証します。 JavaScriptのアレイがゼロインデックス化されているため、ゼロから始まることがよく役立ちます。そのため、丸めて、配列の最初の要素を選択できるようになります。次の例では、
<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>

を使用して配列からランダム要素を選択する方法を示しています。 Math.floor Math.floor上記のコードでは、

丸めを使用して、0〜4の間のインデックスが返されることを確認するため、配列内の各要素が選択される可能性が同じです。
<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>

Math.floor

を使用して数字を丸めます

上向きに丸くすることについて言えば、これはまさにMath.ceilのことです。この名前は「天井」に由来しており、「フローリング」に反して、値が上昇していることを意味します。この方法は、他のすべての方法と同じように機能します。パラメーターとして切り上げたい番号を提供するだけです:

Math.ceilしかし、いつ番号を切り上げる必要がありますか?一般的な使用法は、何かを保持するために必要なコンテナの数を計算する必要がある場合です。たとえば、プレイリストを含む音楽Webサイトがあるとします。各プレイリストには10​​曲が含まれています。誰かが82曲をアップロードした場合、作成するプレイリストの数を把握する必要があります。これは、曲の数を10個(各プレイリストの曲の数)で割ることによって行われます。

<code class="language-javascript">Math.floor(2.3); // 向下舍入到2

Math.floor(2.921); // 向下舍入到2

Math.floor(2.5); // 向下舍入到2

Math.floor(PI);

Math.floor(E);</code>

を使用すると、8に丸められます...ただし、最後の2曲のプレイリストは作成しません。この場合、任意の残りに余分な容器を提供できるように、常に切り上げる必要があります。

<code class="language-javascript">const fruit = ["?", "?", "?", "?", "?"];

const randomFruit = fruit[Math.floor(Math.random() * fruit.length)];</code>

Math.roundを使用して数字を丸めます

次に表示する方法は
<code class="language-javascript">Math.ceil(2.3); // 向上舍入到3

Math.ceil(2.921); // 向上舍入到3

Math.ceil(2.5); // 向上舍入到3

Math.ceil(PI);

Math.ceil(E);</code>
です。厳密に言えば、これは丸め機能ではありません。基本的には、次の例に示すように、数字の小数部分を削除し、整数部分のみを残します。
<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>

一見、Math.truncはもちろん、これまでに与えられたすべての例が同じ結果を示しています。ただし、次の例に示すように、負の値がパラメーターとして提供される場合、2つの方法は異なって動作します。 Math.floor 違いが発生します。

を使用して負の数を切り倒すと、次の最小の整数まで締めくくり、負の値を切り捨てることは上向きに丸められることに相当します。
<code class="language-javascript">const { PI, E } = Math;</code>

パラメーターが負の場合、Math.floorと同じ値を

と返します Math.ceil Math.truncこれらの方法はすべて非常に便利ですが、常に整数値を返すという制限があります。特定の小数またはかなりの数字に数字を丸めたい場合はどうなりますか?

JavaScriptの小数
<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>
の小数

丸い数字

は、数値を最も近い整数に丸めていることがわかりました。残念ながら、

オブジェクトは、より正確な精度で特定の小数の場所に数字を丸める方法を提供しません。幸いなことに、

タイプには、これを行うためのいくつかの組み込みの方法があります。それらを見てみましょう。 Math.round Math Numberこれは数値的な方法です。つまり、数値自体によって呼び出されます。 10進数を指定された10進数に丸めます。これはパラメーターとして提供されます。

注意すべきことの1つは、この値が

文字列Number.toFixedとして返されることです。この問題を解決することができます。メソッド呼び出しを

関数でラッピングします。これにより、結果が数値に戻ります。

また、注:この方法を既に整数である数値に適用しようとすると、単一のポイントのみを使用してメソッドを呼び出すとエラーが表示されます。

<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>
ポイントがメソッドコールオペレーターか小数点であるかどうかは明確ではないため、単一のポイントを使用して整数でメソッドを呼び出すことはできません。これを修正するために、整数をブラケットに入れたり、2つのドットを使用して、小数点で数値リテラルを書く代わりにメソッドを呼んでいることを明確に示すことができます。

引数が提供されていない場合、数値は最も近い整数に丸められます(ただし、文字列として返されます): Number

いくつかの小数点以下の場所に丸めるための一般的なユースケースは、通貨を扱うことです。たとえば、最も近いドルの価格をセントに提供する場合です。プロモーションが進行中のeコマースWebサイトがあり、ショッピングカートのアイテムの15%の割引を受けることができるとします。割引価格を表示する前に、それを締めくくる必要があるかもしれません:
<code class="language-javascript">Math.floor(2.3); // 向下舍入到2

Math.floor(2.921); // 向下舍入到2

Math.floor(2.5); // 向下舍入到2

Math.floor(PI);

Math.floor(E);</code>

これは、
<code class="language-javascript">const fruit = ["?", "?", "?", "?", "?"];

const randomFruit = fruit[Math.floor(Math.random() * fruit.length)];</code>

を使用して簡単に修正できます

<code class="language-javascript">Math.ceil(2.3); // 向上舍入到3

Math.ceil(2.921); // 向上舍入到3

Math.ceil(2.5); // 向上舍入到3

Math.ceil(PI);

Math.ceil(E);</code>

注:あなたが持っている可能性のある問題の詳細については、number()。tofixed()丸めエラー:破損しているが修正可能です。

<code class="language-javascript">const songsPerPlaylist = 10;
const numberOfSongs = 82;
const numberOfPlaylists = numberOfSongs / songsPerPlaylist;</code>

Number.toPrecision

メソッドは

メソッドと同様に機能しますが、数値を固定数のかなりの数に丸めます。 Number.toPrecision Number.toFixed有効な数値を簡単にリマインドする必要がある場合、基本的に最初のゼロ以外の数字のみを使用することを意味します。多くの場合、最終的な答えもゼロで満たされます。たとえば、2つの有意桁に丸められた53,863の数は54,000になります。これは、5と3が最初の2つの非ゼロ番号であり、次の数値は8であるため、上向きに丸みを帯びているためです。丸い値が元の数値の合理的な近似であることを確認するために、最後にゼロを追加する必要があります。

同様の方法で小数を丸めることができます。たとえば、0.00000623978は0.0000062に2つの重要な数字になります。これは、6と2が最初の2つの非ゼロ番号であり、次の数字は3であるため、丸めます。

この方法を使用するには、数字でそれを呼び出して、引数として重要な数の数を提供するだけです(懸念する前に整数をブラケットに配置する必要があることを忘れないでください):

すべての値は文字列として返され、「54000」ではなく「5.4e 4」などの指数表記で使用できることに注意してください。

前述のように、
<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>
関数でメソッド呼び出しをラッピングすることにより、数字が返されるようにすることができます:

特定のかなりの数に丸めの一般的な使用は、あなたが大量に作業し、それらがどれだけ大きいかわからないときです。たとえば、最新の投稿が「好まれている」回数を報告するとしたら、最も近い10、100、または1000に丸めましたか?ある程度、それがどれほど人気が​​あるかに依存します。解決策は、それをかなりの数に丸めることです:Number

JavaScriptの丸め数の問題
<code class="language-javascript">const { PI, E } = Math;</code>
問題

JavaScript(またはプログラミング言語)の数字を丸めるときに注意すべきことがいくつかあります。ご存知かもしれませんが、コンピューターはすべてのデータ(数字を含む)をバイナリ表現として保存します。 JavaScriptは、数字を32ビットのシングルエシジョンバイナリ値として保存します。
<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>

これを行うことの問題の1つは、いくつかの10進数をバイナリで正確に表すことができないことです。これは通常、問題を引き起こしませんが、次のような奇妙な結果につながります。

これは、0.1と0.2をバイナリで正確に表現できず、それらを一緒に追加するときにわずかなエラーを生成できないためです。

オブジェクトには、32ビットを使用して表すことができる最も近い数値を返す

と呼ばれる別のメソッドがあります。たとえば、0.6125はバイナリ0.101として正確に表すことができるため、これは同じ値を返します。
<code class="language-javascript">const test1 = 86;
const test2 = 93;
const test3 = 95;
const average = Math.round((test1 + test2 + test3) / 3);</code>
ただし、上で見たように、0.1を32ビットで正確に表現することはできません。

表現できる最も近い数字を示します:

<code class="language-javascript">const PI = Math.PI;
const E = Math.E;</code>
ご覧のとおり、

0.1に非常に近いですが、は非常にわずかに高くなっています。ほとんどの実用的な場合、これは問題を引き起こしませんが、いくつかの数字を丸めようとすると、時々奇妙な動作を引き起こします。

<code class="language-javascript">const { PI, E } = Math;</code>
これは、3.55が32ビットの正確な表現を使用できないために発生します。

を使用して、実際にどのように表しているかを確認できます。 Math.fround

ご覧のとおり、実際にはフローティングポイント番号3.549999952316284で表されます。これは3.5になります。
<code class="language-javascript">Math.round(2.3); // 因为更接近2,所以向下舍入

Math.round(2.921); // 因为更接近3,所以向上舍入

Math.round(2.5); // 因为正好位于中间,所以向上舍入

Math.round(PI);

Math.round(E);</code>
JavaScriptの丸め数のこれらの問題は頻繁には発生しませんが、特に結果が正確でなければならない場合は、多くの丸めをしている場合は、これらの問題に間違いなく注意を払う必要があります。

数字を丸めるにはどのような方法を使用する必要がありますか?

この記事で説明されているすべての丸め方法を使用すると、どの方法が最適かを尋ねることができます。答えは常に「それは依存します」です。

最も近い整数に数字を丸めたい場合は、

に間違いなくなりますが、分数部分に関係なく、常に締めくくり、上にしたい場合は、または

。負の数を丸めることも計画している場合は、代わりに

を使用することを検討してください。

Math.round特定の小数またはかなりの数に丸める必要がある場合は、Math.floorまたはMath.ceilを使用する必要があります。ただし、両方の方法は数字で呼び出され、文字列を返すことに注意してください。 Math.trunc

この記事で説明されているすべての異なるタイプの丸め例を以下のCodepenデモンストレーションで見ることができます。

Number.toFixedNumber.toPrecisionCodepenデモリンク

これらすべての異なる方法では、将来の丸め数に問題はないはずです。

この記事が便利だと思う場合は、これらも気に入っているかもしれません。 JavaScriptデジタル興味深いニュース

クイックヒント:JavaScriptの数値を序数に変換する方法

JavaScriptの丸め数について

FAQ
  • JavaScriptで最も近い整数に数字を丸くする方法は?
  • 関数を使用して、数値を最も近い整数に丸められます。たとえば、
  • は3を取得し、
  • は5を取得します。

Math.round()の違いは何ですか? Math.round(3.14)最寄りの整数に丸く、Math.round(4.76)最寄りの整数まで丸くなり、

最寄りの整数まで丸めます。

Math.round()数値を特定の小数に丸めてもらえますか?はい、Math.floor()メソッドを使用して、特定の小数の場所に数字を丸くすることができます。たとえば、Math.ceil()は3.14を取得します。 Math.round()

Math.round().5小数部品の数値を処理する方法は? Math.round()「丸め」ロジックを使用します。つまり、分数部分が正確に.5である場合、最も近い整数に丸くなります。たとえば、Math.round(2.5)の結果は2であり、Math.round(3.5)の結果は4です。

Math.round()を使用して正と負の数を丸くすることはできますか?はい、Math.round()は正と負の数で動作します。それは通常のように正の数を丸め、負の数をゼロに丸めます。

JavaScriptで丸めエラーが発生していますか?はい、コンピューターでの浮動ポイント操作の仕組みにより、丸めエラーが発生する可能性があります。特に非常に多数または非常に少ない数を扱う場合、潜在的な精度の問題に注意を払うことが重要です。この場合、より正確な算術操作については、decimal.jsのようなライブラリを使用することを検討してください。

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

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