0

100 分の 1 に丸められた適切な数値を取得できないようです (つまり、12.57000000008 ではなく 12.57)。

var example = {
    user : "John",
    dollars: 12.57
};

setInterval( function() {
    example.dollars += (parseInt(Math.floor(Math.random()*2000 + 500)) / 100);
    console.log(example.dollars);
}, 1000);

次のような値を取得し続けます:
15.20000000008
88.54000000007
86.36000000008

Math 関数で何か間違った設定をしていますか?

注: これは node.js にあります

4

3 に答える 3

2

Javascript の数値は浮動小数点数です。精度 10 進演算に依存するべきではありません。

たとえば、これをjsコンソールに入力できます

.1 + .2 //0.30000000000000004

一般に、整数数学は正確に計算できます。小数の精度をさらに制御する必要がある場合は、数値に誤差範囲を設定できるこのようなライブラリを調べたり、次の言語で記述された外部ライブラリを呼び出したりできます。数値型のより良い処理。

正確な JS 10 進数計算のためのその他のライブラリ:

于 2013-05-11T00:42:43.010 に答える
1

最新のブラウザーのみをサポートする必要がある場合は、このtoFixed方法が最適です。丸める小数点以下の桁数を表す引数を取り、 を返しますString

example.dollars.toFixed(2); // returns "12.57"
于 2013-05-11T07:04:24.517 に答える