0

私は5つ星の評価と平均スコアを持っています。

  1. 平均スコアは浮動小数点数です
  2. 5つ星の評価は10セクションのみで、1つの星には2つのハーフスターがあります(したがって、10セクションは5つ星です)

元:

Average score is: from 0 - 5 (average = 4.658, or average = 0.256, 0 <= average <= 5)

Five star rating is 10 section: [0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5]

平均スコアを確認し、平均スコアに基づいて10セクションベースに設定するにはどうすればよいですか?

これは私のコードです、それは非常に長いです。

            var twofixed = Math.round(average * 100) / 100;           
            twofixed = Math.abs(twofixed);
            var decimal = twofixed - Math.floor(twofixed)

            twofixed = (twofixed + "").split(".");

            if(twofixed[0] == 0)
            {
                if(twofixed[1] == undefined) { average = 0; }
                else
                {
                    if(twofixed[1] <= 99)
                    {
                        average = 0.50;
                    }
                    else
                    {
                        average = 1;
                    }
                }
            }
            else if(twofixed[0] == 1)
            {
                if(twofixed[1] == undefined) { average = 1; }

                else
                {
                    if(twofixed[1] <= 99)
                    {
                        average = 1.50;
                    }
                    else
                    {
                        average = 2;
                    }
                }
            }
            else if(twofixed[0] == 2)
            {
                if(twofixed[1] == undefined) { average = 2; }
                else
                {
                    if(twofixed[1] <= 99)
                    {
                        average = 2.50;
                    }
                    else
                    {
                        average = 3;
                    }
                }
            }
            else if(twofixed[0] == 3)
            {
                if(twofixed[1] == undefined) { average = 3; }
                else
                {
                    if(twofixed[1] <= 99)
                    {
                        average = 3.50;
                    }
                    else
                    {
                        average = 4;
                    }
                }
            }
            else if(twofixed[0] == 4)
            {
                if(twofixed[1] == undefined) { status = 'Great'; average = 4; }
                else
                {
                    if(twofixed[1] <= 99)
                    {
                        average = 4.50;
                    }
                    else
                    {
                        average = 5;
                    }
                }                    
            }
            else if(twofixed[0] == 5)
            {
                if(twofixed[1] == undefined) { average = 5; }
            }

小さなコードで@th3falc0nに感謝します。私は、50行を超えるコードを記述しますが、1行のコードで、長いコードを解決することができます。

みんな助けてくれてありがとう、そして不明瞭な質問と悪い英語をお詫びします

4

3 に答える 3

3

私があなたの質問を正しく理解しているなら、あなたは平均スコアを取り、それを各星が2ポイントの価値がある星の評価に変換したいと思います、そしてあなたはから始めてaverageいます。05

もしそうなら:

// Flags for whether to show stars, based on `average` being
// a fractional number `0 <= average < 5`
var stars = [
    average > 0,
    average > 1,
    average > 2,
    average > 3,
    average > 4
];

それらはフラグです。stars[0]最初の星を表示するかどうかを決定したり、2番目の星を表示するかどうかを決定したりするために使用しますstars[1]

averageが実際にとの間にある0場合は10、それに応じて数値を調整してください。

// Flags for whether to show stars, based on `average` being
// a fractional number `0 <= average < 10`
var stars = [
    average > 0,
    average > 2,
    average > 4,
    average > 6,
    average > 8
];
于 2013-01-30T07:27:51.270 に答える
1

私はあなたが必要だと思います

Math.floor(average * 2.0) / 2.0;

このコードは、任意の浮動小数点数からxyのみを残します。

編集:私は少し間違えました。0.1ステップに設定したので、0.85から0.8になります。これは、現在(1 / 2.0)=0.5ステップに修正されています。0.25ステップには4.0を使用でき、0.1には10.0を使用できます。

于 2013-01-30T07:31:02.927 に答える
0
function getAverage(twofixed)
        {
            var average;
            if(twofixed[1] == undefined)
            {
                average = twofixed[0];
            }
            else
            {
                average = (twofixed[1] <= 99) ? twofixed[0]+0.50 : twofixed[0]+1;
            }
            return average;
        }
于 2013-01-30T07:32:31.490 に答える