Javascript 如何划分一组数字,使其始终在0到100之间?
我有一组数字,它们的最大值可以是千,我希望它在0到100之间。以便在实际中使用它 控制台输出Javascript 如何划分一组数字,使其始终在0到100之间?,javascript,math,Javascript,Math,我有一组数字,它们的最大值可以是千,我希望它在0到100之间。以便在实际中使用它 控制台输出 Event "stabilized" triggered Object {iterations: 0} Event "stabilizationProgress" triggered Object {iterations: 50, total: 2000} Event "stabilizationProgress" triggered Object {iterations: 100, tot
Event "stabilized" triggered
Object {iterations: 0}
Event "stabilizationProgress" triggered
Object {iterations: 50, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 100, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 150, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 200, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 250, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: , total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: , total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 400, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 450, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 500, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 550, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 600, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 650, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 700, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 750, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 800, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 850, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 900, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 950, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1000, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1050, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1100, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1150, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1200, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1250, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1400, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1450, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1500, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1550, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1600, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1650, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1700, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1750, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1800, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1850, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1900, total: 2000}
Event "stabilizationProgress" triggered
Object {iterations: 1950, total: 2000}
Event "stabilizationIterationsDone" triggered
Event "stabilized" triggered
Object {iterations: 2001}
在数学上,将每个数字除以最大值,然后乘以100。在数学上,解决方案似乎很简单:取数值的百分比,你的计算几乎是正确的,只需添加两个参数:
Math.round((arguments[0].iterations / arguments[0].total)*100);
因此,假设你有这样的情况:
Event "stabilizationProgress" triggered
Object {iterations: 900, total: 2000}
计算值应为:
Math.round((arguments[0].iterations / arguments[0].total)*100);
Math.round((900 / 2000)*100);
Math.round((9 / 20)*100);
Math.round((0.45)*100);
=45
您最初的计算结果是:
Math.round(arguments[0].iterations / arguments[0].total)*100;
Math.round(900 / 2000)*100
Math.round(0.45)*100
原因:
1) Math.round()方法将为Math.round(0.45){即值<0.5但大于0},这就是为什么得到:0*100=0。
2) 对于像Math.round(0.75){value>0.5但<1}这样的值,这个方法将返回1,这就是为什么得到:1*100=100 本质上,你的公式只会给你两个值0或100。有道理吗
参考:谢谢我让它运行
Math.round((参数[0]。迭代次数/参数[0]。总计)*100)
。对于其他人,Kailas回答中解释了解决方案谢谢,但Wheeldog的回答帮助我首先解决了问题,正如您在解决方案中解释的那样。
Math.round(arguments[0].iterations / arguments[0].total)*100;
Math.round(900 / 2000)*100
Math.round(0.45)*100