2016-08-24 4 views
2

Ich würde gerne wissen, ob es eine bessere Möglichkeit geben würde, meine stars Variable basierend auf einem Prozentwert zu erstellen.math formula für Bewertungssystem

Alles, was ich brauche ist, um die Bewertung 1, 1,5, 2, 2,5, etc Sterne basierend auf dem Prozentwert zu bestimmen.

Ich habe es mit einer Switch-Anweisung getan, aber fragte mich, ob es eine mathematische Formel, die das tun könnte?

Scheint nur ein wenig langatmig programmatisch, um es so zu machen?

var stars = 0; 

       switch (true) { 
        case score === 100: 
         stars = 5; 
         break; 
        case score >= 90: 
         stars = 4.5; 
         break; 
        case score >= 80: 
         stars = 4; 
         break; 
        case score >= 70: 
         stars = 3.5; 
         break; 
        case score >= 60: 
         stars = 3; 
         break; 
        case score >= 50: 
         stars = 2.5; 
         break; 
        case score >= 40: 
         stars = 2; 
         break; 
        case score >= 30: 
         stars = 1.5; 
         break; 
        case score >= 20: 
         stars = 1; 
         break; 
        case score >= 10: 
         stars = 0.5; 
         break; 
        case score >= 0: 
         stars = 0; 
         break; 
       } 

ich werde meine mathematischen Fähigkeiten sind nicht sehr gut zugeben (i mit Zahlen Legastheniker bin) so leid, wenn meine Frage diejenigen beleidigt, dass die Dinge sich streng sind, zu versuchen, aber das ist mein Gehirn nur Braten!

Vielen Dank im Voraus für jede Hilfe gegeben!

+0

Mit Ausnahme des letzten 'case' scheint' score * 0.05' angemessen zu sein. – David

+0

@David, ich denke, das Problem mit dem OP scheint, nach meiner Antwort auf ein Vielfaches von 0,5 zu runden. Ich nehme an, dass der letzte 'case score> = 100' ein Tippfehler war und sollte 'case score> = 0 sein sonst würde es keinen Sinn machen – neelsg

+0

@neelsg danke es war in der Tat ein Tippfehler! Ich werde versuchen, Ihre Antwort gerade jetzt und komm zurück :) – Stuart

Antwort

6

Ganz einfach:

stars = Math.floor(score/10)/2 
+0

Vielen Dank, das funktioniert perfekt für diese grundlegende Scoring-Ratio, und es hat mich in der Nähe von 40 Zeilen Code gespeichert :) – Stuart

3

bitte versuchen Sie diese

Sterne => 100 Gäste? 0: Math.floor (score * 0.1)/2

1
var result = Math.floor(score * 0.1)/2 
stars = score > 100 ? 0: result 
+0

Willkommen bei Stack Overflow! Während dieses Code-Snippet die Frage lösen kann, hilft [einschließlich einer Erklärung] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, die Qualität Ihres Posts zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. Bitte versuchen Sie auch nicht, Ihren Code mit erläuternden Kommentaren zu überladen, da dies die Lesbarkeit sowohl des Codes als auch der Erklärungen verringert! – FrankerZ