请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

star组件计算分数

在老师的代码中,star组件一开始是

let score = Math.floor(this.score * 2) / 2;

这一步不太理解为什么要这样做,在课程中,老师举例为 4.3 和 4.5,但是结果都是一样的

let score = this.score;

如果这样写,出来的值也是正确的,所以不太明白为什么要先乘2再取整再除以2;


在这里的话,是不是应该使用

let score = Math.round(this.score * 2) / 2;

这样的话,如果评分乘以2,取四舍五入的话,应该符合常理,比如 4.9 应该显示5颗星

正在回答 回答被采纳积分+3

2回答

小白小白小白啦 2018-03-29 15:42:56

如果用round做四舍五入是不行的,比如4.4评分,4.4*2 = 8.8, 四舍五入为9 ,9除以2为4.5,那就为4颗半星了,而最初的4.4应该是4颗星。

老师用了一个floor函数,找出小于等于这个数的最大整数。并且用4.3和4.5结果是不一样的。4.3带入计算为

4.3*2 = 8.6 小于等于8.6的最大整数为8 Math.floor(8.6)=8 8/2 = 4

带入4.5计算的话同理为4.5。

其实老师这么做就是想把score变成.5的形式。你仔细琢磨琢磨就知道了

1 回复 有任何疑惑可以回复我~
  • 提问者 梦海千里渡 #1
    那这样说起来的话,4.9的情况下,也是半颗星,这样看起来的话,用户体验并不好,在滴滴或是饿了么,4.9评分的情况下,显示的都是满星。同理,4.4的情况下,显示四星半,个人感觉没有不妥
    回复 有任何疑惑可以回复我~ 2018-03-29 15:52:34
  • 讲解的比较细致,思路也清晰,非常感谢!!
    回复 有任何疑惑可以回复我~ 2018-07-21 19:15:05
小白小白小白啦 2018-03-29 16:02:46

确实,老师这么计算存在一些问题,只有在5分的情况下,才可以是5颗星。你可以按照你的想法写一下。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信