2016-03-22 16 views
0

Ng-yinelemedeki dinamik verilerden toplam almak için bir filtre kullanıyorum. Muhtemelen, ondalıkları 2 yere indiremem. o iş ve "toFixed (2)" sıradışı unreadible sonuçlar verdi kullanmaya çalışıyorum çünkü ben "parseFloat" dışarı yorumladıAçısal Sorun ayrıştırma Float

app.filter('sumByKey', function() { 
    return function (data, key) { 
     if (typeof (data) === 'undefined' || typeof (key) === 'undefined') { 
      return 0; 
     } 

     var sum = 0; 
     for (var i = data.length - 1; i >= 0; i--) { 
      //sum += parseFloat(data[i][key]); 
      sum += Math.round((data[i][key]) * 1e12)/1e12; 
     } 

     return sum; 
    }; 
}); 

: İşte benim filtredir. Ben IE ve Chrome'da bu test ettik ve hala şu olsun: (

enter image description here

Bu benim toFixed" olarak yukarıda belirtildiği gibi "(2) toFixed" tarafından cevaplanır soruya bir kopya değil 2) "uzun çılgın okunamayan sayıları döndürür.

Her türlü yardım büyük beğeni topluyor!

+0

"Basamaklı (2)", "olağandışı bir şekilde okunamayan sonuçlar verdiğinde" ne anlama gelir? –

+1

'toFixed', bir sayı değil, tür dizgisinin bir dönüş değeri olduğunu unutmayın. Sorununuzu açıklayabilir. –

+0

Bunu düzeltmenin bir yolu var mı? –

cevap

0

Number.toPrecision işlevini deneyin, örn.

var sum = 0; 
for (var i = data.length - 1; i >= 0; i--) 
    sum += parseFloat(data[i][key]); 

return parseFloat(sum.toPrecision(2)); 
+0

Harika! Bunu yaptı! Bir milyona teşekkürler! –