2016-07-04 10 views
0

lodash ist, für mich, produziert unerwartetes verhalten. Wo ich Rundungen auf 2 Dezimalstellen spezifiziere gibt mir manchmal einen. Dies ist lodash v3.20.1 und Chrome v51. Beispiel: 5.599999 wird auf 5.6 statt auf 5.59 gerundet.lodash rundung auf 1 dezimal statt 2

var num = 5.58888 
console.log('lodash num .round is ' + _.round((num), 2)); // 5.59 as expected 

var num2 = 5.59999; 
console.log('lodash num2 .round is ' + _.round((num2), 2)); // 5.6 not expected, why? 

Ist das ein Fehler oder mache ich etwas falsch?

+2

'5.59' ist nicht' 5.59999' auf zwei Dezimalstellen gerundet. Es ist in der Tat "5,6". Brauchst du noch '5.60'? Dann benutze 'toFixed'. – Xufox

Antwort

3

Als @Xufox erklärt:

5.59 ist eine Rundung auf zwei Dezimalstellen 5.60

Aber eine Zahl mit Nullen fügt keine Präzision, gibt es keine Notwendigkeit, es zu zeigen, ist es automatisch entfernt. Wenn Sie es erzwingen müssen, können Sie die toFixed() -Methode verwenden, die eine Zahl mit Festkomma-Notation formatiert.

_.round((num2), 2).toFixed(2)) //lodash num2 .round is 5.60 

berücksichtigen, dass es eine String-Darstellung des Ergebnisses der _.round zurückgibt ((num2), 2)