0.009*100 //?????输出0.8999999999999999999
for(var i=0; ; i++) {console.log(i)} //会无限执行,为什么,中间是空的那就是不满足条件啊
0.009*100 //?????输出0.8999999999999999999
for(var i=0; ; i++) {console.log(i)} //会无限执行,为什么,中间是空的那就是不满足条件啊
问题一:JS无法将所有的浮点数都一一表示出来,而是尽量将最接近的结果作为计算的结果;
问题二:for循环的第二个语句块表示运行循环的条件,如果您省略了该语句块 2,那么必须在循环内提供 break。否则循环就无法停下来。这样有可能令浏览器崩溃
第一个问题Javascript
采用了IEEE-745
浮点数表示法(几乎所有的编程语言都采用),这是一种二进制表示法,可以精确地表示分数,比如1/2
,1/8
,1/1024
。遗憾的是,我们常用的分数(特别是在金融的计算方面)都是十进制分数1/10
,1/100
等。二进制浮点数表示法并不能精确的表示类似0.1
这样 的简单的数字。
第二个问题
默认就是true
的,不是undefined
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答872 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
第一个问题,建议一看一下浮点数,这个百度一搜很多的
第二个问题,因为第二个参数是条件,而你没有写条件,那当然能一直执行了,这就相当于过安检,它有一套规则,你符合了能过去,反之过不去,现在安检没了,当然都能过去了