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的形式。你仔细琢磨琢磨就知道了

1
2
悬壶行者
讲解的比较细致,思路也清晰,非常感谢!!
2018-07-21
共2条回复

小白小白小白啦

2018-03-29

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

0
0

Vue.js2.5+cube-ui重构饿了么App(经典再升级)

掌握Vue1.0到2.0再到2.5最全版本应用与迭代,打造极致流畅的WebApp

9868 学习 · 4162 问题

查看课程