var zs11=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25];
var zs11=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,25.1];
var zs11=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26];
为什么当我 数组的 25后面,添加25.1 或者 25.2 的时候为什么值有大到小,当在25后面添加26的时候,25.5的值会比26的值大;
var meitong=209, shijian=1800, shuiping=20, Ts=172.25;
var y=meitong/shijian;
var u=(y*Ts).toFixed(2);
//设置范围
var zs11=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,25.1];
for(var m=1;m<zs11.length;m++){
var shuzhu1=zs11[m];
//占用率
p=u/shuzhu1;
//分布(拆分)计算Erlang公式
//第一步现货区U的m平方
var um=Math.pow(u,shuzhu1);
//计算呐值
var sum=0;
for(var j=1,i=2;i<zs11.length;i++){
var shuzu11=(zs11[i]-1);
var km=Math.pow(u,shuzu11);
j=j*shuzu11;
var j1=j;
sum+=km/j1;
}
for(var mi1=1,mi2=1;mi2<zs11.length;mi2++){
var shuzu12=zs11[mi2];
mi1=mi1*shuzu12;
var misum=mi1;
var sun1=(um/misum);
var Ec=(sun1/(sun1+(1-p)*sum));
var eping=(-(shuzhu1-u)*(shuiping/Ts));
var zonge=(Math.pow(2.718,eping));
var zonsun=(1-Ec*zonge);
}
}
console.log((zonsun).toFixed(4))
你可以看看你打印出来的值
精度的问题,js运算不会这么准,比如1+1=2,js算出来其实是1.999999999,然后你又进行很多次的加减乘除,就越来越不准了
运算精度丢失问题就是因为,小数或整数转化为该标准的二进制的过程中出现的丢失。
如果要准确的计算可以转成二进制后在进行计算;
列9转为二进制:
9/2=4...1
4/2=2...0
2/2=1...0
1/2=0...1
得出9的二进制为1001