2017-06-15 10 views
0

私はオブジェクトの配列を持っており、いくつかのオブジェクトの合計を注入する必要があります。 だから私は、この持っている:私は奇妙な数(67.30000000000001)を取得する「トータル」で結果を置くためにすべての値を合計場合、私は「合計」を計算しています配列値の合計の計算が間違っていますか?

...

var details=[{month: 1,equips:32.1, instals:12.6, softs: 6.7, manuts:6.2, formacs: 9.7, total:0.0}] 

アンを

var i,nLines=details.length; 
for(i=0;i<nLines;i++){ 
    details[i].total=(details[i].equips)+(details[i].instals)+(details[i].softs)+(details[i].manuts)+(details[i].formacs); 
       } 

そして、いくつかの理由で、私が述べたような、特定の行(私の配列は、より多くのラインを持っている)私の結果はいくつかの奇妙な小数を持っている...の...

:このような既にparseFloatを試してみましたが、私は同じ奇妙な結果を得ました...そして、私が "関数ではありません"を得る場合、私は "totoFixed(1)を使用します"

+2

可能な重複https://stackoverflow.com/questions/588004/is-floating-point-math-broken: は、だから、単に機能にあなたの結果をラップすることができます) –

+0

あなたが指定したコードは動作しません。あなたの 'details'配列は'} 'の代わりに'] 'で終わるべきで、あなたのループは' detalhes'という名前の変数を繰り返しますか?私はこれがオススメだと確信していますが、それが実行可能になるように編集すると助けになるかもしれません。 – pacifier21

+0

申し訳ありませんが、タイプミスでループ変数の翻訳を忘れました –

答えて

0

JavaScriptの浮動小数点数

function roundFloat(number) { 
    return parseFloat((number).toPrecision(10)) 
} 

roundFloat(67.30000000000001); // 67.3 
[?小数点演算が壊れて浮いている](の
関連する問題