首页 > 解决方案 > 控制台记录十进制步数以在 javascript 中编号

问题描述

我正在尝试0.1在 Javascript 中动态制作十分之一编号的标尺。我知道我可以轻松地创建一个 for 循环并console.log获得正确的迭代次数。我只需要正确计算数学,这就是让我对如何编码感到困惑的地方。

它应该像这样记录......

0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2

像 0 这样的整数就是 0,1 就是 1,2 就是 2,依此类推......

但是我的问题是它会像这样生成......

0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.10
.11
.12
.13
.14
.15
.16
.17
.18
.19
.20

我知道 1.1 大于 1 并且 2 大于 1.0,我知道我可以编写该表达式(1.1 > 1)来检测它,但是如何在上面第一个示例中表达的日志示例中写出所有表达式?

var timeVal = parseFloat(parseFloat(time.value));

for (i = 0; i < parseFloat(timeVal * 10) + 1; i++) {
    if (i === 0) {
      console.log(+i)
    } else if (i <= 1) {
      console.log('.'+i)
    } else {
      console.log('.'+i)
    }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

seconds: <input id="time" type="number" value="2" min="0" step=".1">

标签: javascriptmathnumbers

解决方案


一个简单的 for 循环来做到这一点。它也适用于十进制数。for 循环中的“timeVal + 0.01”是为了避免浮动误差范围的问题。

var timeVal = parseFloat(document.getElementById("time").value);

for (var i = 0; i <= timeVal + 0.01; i += 0.1) {
  console.log(i.toFixed(1));
}
seconds: <input id="time" type="number" value="2.3" min="0" step=".1">


推荐阅读