2016-10-12 5 views
1

ich die decimal.js mit mit Zahlen zu berechnen und die Vorteile mit durch große Zahlen Umgang ..dezimal js Runden 3stellig Zahlen [wahrscheinlich ein Fehler?]

Nun kam ich zu dem Punkt, wo ich will runde Zahlen zu einem bestimmten Multiplikator.

alles hat gut funktioniert, bis ich dieses Problem fand;

Diese Zeile wird 500 ausgeben. Ist es einfach ein Fehler oder habe ich einen Fehler in meinem Code gemacht? Und wenn ihr ein Fehler frage ich mich, warum es passiert nur an dieser bestimmten Nummern unten zeigte ...

new Decimal(75).toNearest(50,2).toNumber() //-> 100 
new Decimal(7500).toNearest(5000,4).toNumber() //-> 10'000 

wenn u bei decimal.js API

nur die 3-stellige Nummer ein wenig mit diesen Aussagen spielen könnte Runde richtig sein:

new Decimal(300).toNearest(200,3).toNumber() //-> 200 
new Decimal(450).toNearest(300,3).toNumber() //-> 300 
new Decimal(600).toNearest(400,3).toNumber() //-> 400 

Antwort

2

Bitte Pflege der zweiten Eigenschaft in .toNearest-Funktion: https://mikemcl.github.io/decimal.js/#modes

2: runden t owards Infinity (oben)
3: Runden in Richtung -Unendlich (nach unten)
4: Runden zum nächsten Nachbarn. Wenn äquidistant, wird von Null abgerundet.

Also müssen Sie darüber nachdenken, was das erwartete Ergebnis sein sollte und wählen Sie die richtige Rundungsmethode. Die Rundungsmethode hat nichts mit der Anzahl der Ziffern zu tun.

new Decimal(75).toNearest(50,2).toNumber() //-> 100 
new Decimal(75).toNearest(50,3).toNumber() //-> 50 
new Decimal(75).toNearest(50,4).toNumber() //-> 100