Javascript 按十进制值递增for循环

Javascript 按十进制值递增for循环,javascript,Javascript,我试图实现一个递增0.1的for循环。我有一个似乎可以正常工作,增量为0.5。虽然这可能是一个“假阳性”,因为0.1给了我一些奇怪的i值 function thisisi() { var x = 1; for (var i = (x+0.1); i < 2; i += 0.1) { console.log('i', i); } }; 而不是我需要的,1.1,1.2,1.3等等 有人能指出我白痴的根源吗?你可以用来限制小数点后出现的位数: fun

我试图实现一个递增0.1的for循环。我有一个似乎可以正常工作,增量为0.5。虽然这可能是一个“假阳性”,因为0.1给了我一些奇怪的i值

function thisisi() {
    var x = 1;

    for (var i = (x+0.1); i < 2; i += 0.1) {
        console.log('i', i);
    }

};
而不是我需要的,1.1,1.2,1.3等等

有人能指出我白痴的根源吗?

你可以用来限制小数点后出现的位数:

function thisisi() {
    var x = 1;

    for (var i = (x+0.1); i < 2; i += 0.1) {
        console.log('i', i.toFixed(1));
    }

};
函数thisisi(){
var x=1;
对于(变量i=(x+0.1);i<2;i+=0.1){
控制台日志('i',i.toFixed(1));
}
};

您可以使用限制小数点后出现的位数:

function thisisi() {
    var x = 1;

    for (var i = (x+0.1); i < 2; i += 0.1) {
        console.log('i', i.toFixed(1));
    }

};
函数thisisi(){
var x=1;
对于(变量i=(x+0.1);i<2;i+=0.1){
控制台日志('i',i.toFixed(1));
}
};
正如“三分之一”(1/3)不能用十进制(0.333…)精确表示一样,十分之一(0.1)也不能用二进制(0.000110011…)精确表示一样。

正如“三分之一”(1/3)不能用十进制(0.333…)精确表示一样,十分之一(0.1)也不能用二进制精确表示(是0.000110011…。

试试这个:

        function thisisi(){
            var x = 1;
            for (var i = x; i < 2; i += 0.1) {
                var str = Math.floor( i * 1000 ) / 1000;
                console.log(str);
            }
       };
       thisisi();
函数thisisi(){
var x=1;
对于(var i=x;i<2;i+=0.1){
var str=数学楼层(i*1000)/1000;
console.log(str);
}
};
thisisi();
试试这个:

        function thisisi(){
            var x = 1;
            for (var i = x; i < 2; i += 0.1) {
                var str = Math.floor( i * 1000 ) / 1000;
                console.log(str);
            }
       };
       thisisi();
函数thisisi(){
var x=1;
对于(var i=x;i<2;i+=0.1){
var str=数学楼层(i*1000)/1000;
console.log(str);
}
};
thisisi();

approved,但是这并不能帮助我理解为什么要得到这些值?@OliverJ90 javascript中的所有数字都使用64位双精度表示。这就是原因。approved,但是这不能帮助我理解为什么要得到这些值?@OliverJ90 javascript中的所有数字都使用64位双精度表示决定。这就是原因。每天都是上学日。感谢这有意义,我将按照@Felix的建议使用
.toFixed()
。我只是想确保我没有遗漏更重要的东西。每天都是上学日。感谢这有意义,我将只使用
.toFixed()
正如@Felix所建议的。我只是想确保我没有遗漏更重要的东西。