2016-08-24 14 views
2

パーセント値に基づいて変数starsを作成するより良い方法があるかどうかを知りたいと思います。評価システムの数式

私が必要とするのは、パーセンテージ値に基づいて、星1、1.5,2,2.5などの星を決定することだけです。

私はswitch文でこれを行いましたが、これを行う数式があるかどうか疑問に思っていましたか?

このようにするにはプログラム的にちょっと待たれているようですが?

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; 
       } 

私は私の質問は、物事を自分でしようとするが、これはちょうど私の脳をフライパンさについて厳格なものを傷つける場合は、私の数学の能力は非常に申し訳ありません(私は数字と失読症だ)非常に良いものではありません認めますよ!

ご協力いただきありがとうございます!

+0

最後の 'case'を除いて、' score * 0.05'は妥当と思われます。 – David

+0

@David、私はOPの問題は、私の答えごとに '0.5'の倍数に切り捨てたいと思うと思います。最後の 'case score> = 100'がタイプミスで、' case score> = 0'だったはずです。それ以外の場合は意味がありません – neelsg

+0

@neelsg本当にタイプミスでした!私はちょうど今あなたの答えを試し、戻ってくるでしょう:) – Stuart

答えて

6

シンプル:

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

これは本当にありがとう、これは完全にこの基本的なスコアリングのために動作し、コードの40行の近くに私を保存しました:) – Stuart

3

=>は100得点この

星を試してみてください? 0:Math.floor(スコア* 0.1)/ 2

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

ようこそスタックオーバーフロー!このコードスニペットは問題を解決するかもしれませんが、[説明を含めて](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ