gpt4 book ai didi

javascript - for 循环增量,小数点停止在 1.42,而不是继续直到计算完成

转载 作者:行者123 更新时间:2023-12-03 05:04:04 24 4
gpt4 key购买 nike

我在 JavaScript 中使用 for 循环开发了一个简单的小平方根计算器。

但是,我注意到每次循环迭代时输出 i 的每个值(使用 console.log(i).toFixed(2))时,计数将每次都停在1.42

这是JavaScript:

// inp is the input in which the user types the number they would like to find the square root of
for(var i = 0; i < inp.value; i += 0.01){
var check = i * i;
check = check.toFixed(2); // fix decimal to a tenth

console.log(i.toFixed(2)); // output value to console

if(check == inp.value){ // if i * i is equal to user input
alert(i); // alert the square root
break; // break out of for loop
} else if(check > inp.value){ // if the value is more than user input
alert("Value could not be found."); // alert value could not be found
break; // break out of for loop
}
}

感谢所有帮助,
谢谢。

编辑:我注意到,如果我输入 1,它将输出直到 0.99,而不是 >1.42

编辑2:我测试了易卜拉欣的新答案,它有点有效。现在它停止在 3.17,而不是 1.42。然而,我注意到在测试之后,我的笔记本电脑风扇会开始全速旋转,我的 CPU 负载会在短时间内飙升至 100%,然后减慢至 40% 左右。也许笔记本电脑无法处理一致的 for 循环?如果是这样,什么是更好的替代方案?谢谢

fiddle :https://jsfiddle.net/pk7or60f/

最佳答案

我对此有疑问,但它一直是错误。 .toFixed 返回一个字符串(我知道),inp.value 是一个字符串(我也知道)。但我认为,由于 > 仅处理数字,因此解释器会将它们的值用作数字并进行正确的比较。但我错了。因此,要强制解释器将它们视为数字,请使用 NumberparseFloat显式方式,如下所示:

else if(Number(check) > Number(inp.value)){
alert("Value could not be found.");
break;
}

或使用一元+隐式方式,如下所示:

else if(+check > +inp.value){
alert("Value could not be found.");
break;
}

相等性检查也是如此。

关于javascript - for 循环增量,小数点停止在 1.42,而不是继续直到计算完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42087428/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com