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
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
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>');
Math.floor abrundet Math.ceil Rounds Up
Das ist nicht das, worüber ich gesprochen habe, das löst nur einen Teil der Frage. –
Dann sollten Sie Ihre Frage vielleicht zu AND anstatt zu OR umformulieren. – Robert
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. –
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)
}
warum? der Fehler ist kleiner mit der Rückkehr von 0,99 und 54,01 –
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). –
Also nur zum nächsten Ganzen, wenn es mit '.99' endet? –