2016-03-27 13 views
1

Ich brauche eine Zahl auf die nächste Vielfache von 0,11 oder zu einem runden ganze Zahl gerundetRunde Nummer das nächste Vielfache von 0,11 über JavaScript

Beispiel:

0.99 turns to 1.00 
0.87 turns to 0.88 
0.59 turns to 0.55 
54.01 turns to 54.00 
+0

warum? der Fehler ist kleiner mit der Rückkehr von 0,99 und 54,01 –

+1

mit es für eine Website mit einem Videospiel die Währungen, die von 0,11 gehen -> 0,22 -> 0,33 -> (so) -> 1,00 -> 1,11 -> (und es geht auf). –

+0

Also nur zum nächsten Ganzen, wenn es mit '.99' endet? –

Antwort

2

Ich schlage vor, den ganzzahligen Teil und den Bruchteil zu trennen. Wenn der Bruchteil nahe bei Faktor 9 ist, dann gebe den ganzzahligen Teil plus eins zurück, andernfalls den ganzzahligen Teil plus den korrigierten Bruchteil.

function getRight(v) { 
 
    var i = Math.floor(v), 
 
     f = Math.round((v - i)/0.11);     
 
    return i + (f === 9 || f * 0.11); 
 
} 
 

 
var array = [0.99, 0.87, 0.59, 54.01], 
 
    result = array.map(getRight); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

-2

Math.floor abrundet Math.ceil Rounds Up

+0

Das ist nicht das, worüber ich gesprochen habe, das löst nur einen Teil der Frage. –

+0

Dann sollten Sie Ihre Frage vielleicht zu AND anstatt zu OR umformulieren. – Robert

+1

Ich habe meine Frage richtig formuliert, in einigen Fällen sollte sie auf das niedrigste Vielfache von 0,11 und in einigen anderen Fällen auf die nächste ganze Zahl runden. –

0

Sie dies bedeuten, Vielleicht:

function roundStop(n) {return n%10==0?n/10:(n-n%10)/10+(n%10)*0.11} 
function round(x){ 
var i=0; 
while(roundStop(i)-x<0)i++; 
return roundStop(i-1)-x>x-roundStop(i)?roundStop(i-1):roundStop(i) 
} 
Verwandte Themen