评分系统的数学公式

3

我想知道是否有更好的方法基于百分比值创建我的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;
                }

我承认我的数学技能不是很好(我在数字方面有阅读障碍),所以如果我的问题冒犯了那些坚持自己尝试的人,我很抱歉,但这让我感到非常困扰!

非常感谢您提供的任何帮助!


除了最后一个 casescore * 0.05 看起来是合理的。 - David
@David,我认为问题在于OP似乎想要按照我的答案向下舍入到0.5的倍数。我假设最后一个case score >= 100是一个笔误,应该是case score >= 0,否则它就没有任何意义。 - neelsg
@neelsg 谢谢,确实是个笔误!我现在会尝试你的答案并回来 :) - Stuart
3个回答

6

简单:

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

非常感谢,这对于这个基本的评分比例完美地起作用了,并且它为我节省了近40行代码 :) - Stuart

4

请尝试这个

星星 = 分数 > 100 ? 0 : Math.floor(分数 * 0.1) / 2


(注:此代码片段为JavaScript代码,用于计算得分所对应的星级评价)

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

欢迎来到Stack Overflow!虽然这段代码可能会解决问题,但包括解释真的有助于提高您的帖子质量。记住,您正在为未来的读者回答问题,而这些人可能不知道您代码建议的原因。请尽量不要在代码中添加过多的解释性注释,因为这会降低代码和解释的可读性! - Blue

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接