この記事を参照してください: math-round-vs-hack
数学関数が最適化されています。
(num+0.5)|0
の代わりに使用しMath.round()
ます。
しかし、num> 2147483647の場合、間違った結果が出るという混乱を招く問題があります。
function round(n) {
return (n + 0.5) | 0;
};
round(2147483648)
-2147483648を返します
そしてウィキペディアによると:
コンピューティングにおける2147483647
数値2,147,483,647は、>コンピューティングにおける32ビット符号付き整数の最大値でもあります。したがって、これは、一般的なCPUで実行されている多くのプログラミング言語でintとして宣言されている変数の最大値であり、多くのビデオゲームで可能な最大スコア(または金額)です。数値の出現は、多くの場合、エラー、オーバーフロー状態、または値の欠落を反映しています。[8] 同様に、「(214)748-3647」は、米国の電話番号として表される数字のシーケンスであり、Webページにリストされている最も一般的な電話番号です。[9] Unixなどのオペレーティングシステムで使用されるデータ型time_tは、Unixエポックの開始(1の深夜UTC> 1970年1月)からの秒数をカウントする32ビットの符号付き整数です。[10] この方法で表すことができる最新の時刻は、火曜日の03:14:07UTCです。
良好なパフォーマンスを確保するために、この状況にどのように対処できますか?