star组件计算分数
来源:16-12 详情弹层页(3)- star组件抽象(下)

梦海千里渡
2018-03-29
在老师的代码中,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颗星
写回答
2回答
-
小白小白小白啦
2018-03-29
如果用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的形式。你仔细琢磨琢磨就知道了
122018-07-21 -
小白小白小白啦
2018-03-29
确实,老师这么计算存在一些问题,只有在5分的情况下,才可以是5颗星。你可以按照你的想法写一下。
00
相似问题
star组件没有显示出来
回答 2
注册组件后一致报这个错
回答 4