下面的代码很简单,输出符合预期
代码:
Option Explicit
Sub Test_loop2()
Dim i As Long
For i = -3 To 3 Step 1
Debug.Print i
Next i
End Sub
输出:
由于四舍五入,以下代码提前退出
Option Explicit
Sub Test_loop2()
Dim i As Double
For i = -0.3 To 0.3 Step 0.1
Debug.Print i
Next i
End Sub
输出:
在保留 For 循环
以确保最后一个值在非整数循环中运行的同时,我可以使用什么最可靠的方法?
例如,对于 i = X 到 Y,步骤 Z - 如果 Y 是 Z 的倍数,则必须始终达到 Y
对于 i = 0 to 0.3 步骤 0.1 然后 0.3 将在循环中
对于 i = 0 到 0.3 步骤 0.2 然后 0.3 将不在循环中
最佳答案
Floating point arithmetic如果您使用 Double(或 Single)作为计数器,最终会搞砸您。
对于计数器,坚持使用整数。然后从该计数器中导出浮点值。示例:
Dim i As Long
Dim d As Double
For i = 0 To 6
d = (i - 3) * 0.1 ' or whatever formula needed
Debug.Print d
Next i
关于vba - 如何使 For 循环处理非整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29558276/