-4

私はこれらの 3 つの関数を JavaScript でいじっていましたが、それらがすべて間違った丸め値を与えることに気付くまででした。次のシナリオを言ってみましょう

var x = 1.49849;
Math.round(x) //return 1, but from what I learnt from school it should be 2, right?
x.toFixed()   //return 1 too! same as rounding
x.toFixed(3)  //return 1.498, shouldn't it be 1.499?
x.toFixed(4)  //return 1.4985, at least this is working correctly....

toPrecision() を試してみましたが、基本的には toFixed() と同じです。

JavaScript での丸めでは、1 つの数値のみが考慮され、残りの小数点は無視されているようです。

このタイプのシナリオで JavaScript を回避する方法はありますか?

サーバー側でいつでもこれを実行できることはわかっていますが、JavaScript だけに焦点を当てましょう。

4

1 に答える 1

10

いいえ、あなたは間違っています。

1.49849 を最も近い整数に丸めると 1 になります。これは、小数点以下の最初の桁が 5 より小さい 4 であるためです。

1.49849 は小数点以下 3 桁に丸められ、4 桁目が 4 であるため 1.498 です。

四捨五入する最初の桁が 5 以上の場合にのみ切り上げられます。一部の財務丸めシステムでは、正確な半分が最も近い偶数に丸められるため、2.5 は 2 に丸められますが、3.5 は 4 に丸められます。

于 2013-09-24T08:37:57.523 に答える