我写了个js 的for循环是什么问题

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