2016-08-17 4 views
-2

Gibt es eine Möglichkeit, eine Zahl abzurunden, dh wenn es 2,3 und größer ist, sollte es als 2 bleiben, aber wenn größer als 2,9 sollte es auf 3 runden. Nicht sicher, wie ich sie machen würde arbeite mit Math.round, da dies immer zu 3 nach 2.4 kommt. Vielen Dank.Abgerundet auf mehr als 0,9 in Javascript

+1

Größer als 2,9 oder größer oder größer oder gleich 2,9? Außerdem bezweifle ich, dass Math.round Runden 2,41 bis 3. – Bathsheba

+0

Größer als 2,9 sollte zu 3 werden, aber wenn weniger als das sollte es 2 – aditya063

+1

Sie können benutzerdefinierte Funktion, die diese Logik implementieren können und anstelle von Math.round können Sie machen rufe diese Funktion auf. Funktion customRound (a) {wenn (a * 10% 10> = 3 && a * 10% 10 <= 9) {return a - (a% 10); } else {return a + (10 - a% 10); }}; – g9m29

Antwort

3

Eine Möglichkeit ist, einen Versatz zu verschieben, um die Rundung „Pivot“ 0,5-0,9 hinzuzufügen. Wenn x die Zahl dann abzurunden verwenden

Math.round(x - 0.4)

+0

@Downvoter (s) werden: Brauche ich Kaffee? Welche Anforderung erfüllt das nicht? (Ich hatte einen Tippfehler im ersten Entwurf.) – Bathsheba

+0

Dies ist die richtige Antwort, weiß nicht, warum es Downvoter (s) gibt. Es ist nicht notwendig, die benutzerdefinierte Rundungsfunktion zu verwenden, wie es in anderen Antworten gezeigt wird, aber es ist genug wie in Ihrer Antwort. – Legionar

+1

Sie wissen bereits, dass Sie einen Tippfehler gemacht haben, der den Code nicht richtig funktioniert hat. Nachdem Sie den Tippfehler behoben haben, wurden die Downvotes umgekehrt. Das System funktioniert. – JJJ

0

Sie könnten eine Hilfsmethode wie haben unter

function Extended_Roundoff(num, decimal_threshold){ 
    var decimal_part = num - Math.floor(num); 
    if(decimal_part >= decimal_threshold){ 
    return Math.ceil(num); 
    }else{ 
    return Math.floor(num); 
    } 
} 

console.log(Extended_Roundoff(2.3, 0.9)); 
console.log(Extended_Roundoff(2.95, 0.9)); 
-1

nicht ganz erste Bedingung fangen: (?), Wenn es 2.3 ist und größer sollte es 2.

Rückkehr hier So Funktion ist , dass Runde Zahlen mit Bruch> 0,9

function customRound(number){ 
    return (number-(~~number))>0.9 ? ~~number+1 : ~~number; 
} 
+0

wenn es weniger als 2,9 ist, dann sollte es auf 2 runden und wenn 2,9 oder größer als das sollte es 3 werden. Danke – aditya063

+0

was sollte 7,9 werden? –

+0

Und warum downvotes? Arbeitsantwort ... –

1
function customRound(v) { 
    return Math.round(v-0.4); 
}; 

wenn v großen weniger als x.9, i t kehrt x

customRound(2.1) // 2 
customRound(2.8) // 2 
customRound(2.89) // 2 

else if v groß ist als x.9, es retuans x + 1

customRound(2.91) // 3 

Und Sie können benutzerdefinierte der Offset wie Sie möchten.

+0

UV'd. Im Wesentlichen meine Antwort, aber mit einigen Erklärungen. (Obwohl ich persönlich nicht in eine separate Funktion einbinden würde - für mich ist das Verhalten von 'Math.round (v - 0.4)' an der Aufrufseite deutlicher als 'customRound (v))' – Bathsheba

0

Dies wird 24 zurückkehren und wenn num wird, ist 23,6 23 zurückkehren

var num = 23.9; 
var nr = num % Math.floor(num) 
nr = Math.round(nr * 100)/100 
if(nr >=0.9){ 
    num = Math.floor(num+1); 
}else{ 
    num = Math.floor(num); 
} 
alert(num); 
Verwandte Themen