2010-08-12 5 views
24

Wie kann ich eine Dezimalzahl in Javascript auf die nächsten 10 runden? Mein Mathe ist ziemlich Müll heute, könnte es die 2 Stunden Schlaf:/Round Geld zu nächsten 10 Dollar in Javascript

Einige Beispielfälle

$2823.66 = $2820 
$142.11 = $140 
$9.49 = $10 

Ich verstehe ich wahrscheinlich eine Kombination aus Math.round/Boden brauchen, aber ich kann nicht scheinen das erwartete Ergebnis zu bekommen.

Jede Hilfe/Zeiger geschätzt!

M

+0

Wow, 4 identische Antworten – titaniumdecoy

+0

Dann das muss der richtige Weg, es zu tun :-) – paxdiablo

+3

Danke an alle für ihre Antworten, ich kann nicht wirklich entscheiden, welche Antwort ich annehmen soll, also gebe ich Toby, der am wenigsten hat, Punkte! :) – Marko

Antwort

70

Versuchen

Math.round(val/10) * 10; 
9

Um eine Zahl auf die nächste 10-Runden, Erste teilen sie durch 10, dann um es zum nächsten 1, dann mit 10 multiplizieren wieder:

val = Math.round(val/10)*10; 

This page hat einige Details. Sie gehen in die andere Richtung (z. B. Runden auf 0,01), aber Theorie und Praxis sind identisch - multiplizieren (oder teilen), runden, dann teilen (oder multiplizieren).

12

Mit dieser Funktion:

function roundTen(number) 
{ 
    return Math.round(number/10)*10; 
} 



alert(roundTen(2823.66)); 
2
function round(number, multiplier) { 
    multiplier = multiplier || 1; 
    return Math.round(number/multiplier) * multiplier; 
} 

var num1 = 2823.66; 
var num2 = 142.11; 
var num3 = 9.49; 

console.log(
    "%s\n%s\n%s", // just a formating thing 
    round(num1, 10), // 2820 
    round(num2, 10), // 140 
    round(num3, 10) // 10 
); 
+1

Overkill, aber sehr nützlich. +1 – Josiah