我在VBA中为excel编写一个循环,我想循环遍历一个十进制数字序列,而不是整数。
例如:
For i = 1 To 10
'Do something
Next i
但是我想增加0.5(或者可能是5,或者除了1以外的任何数字),而不是增加1。
答案 0 :(得分:8)
Dim i as Single
For i = 1 To 10 Step 0.5
'
Next
但请注意,由于floating numbers not being precise,您可能会收到一些不需要的号码。
答案 1 :(得分:3)
Sub a()
For i = 1 To 10 Step 0.1
Debug.Print i
Next i
End Sub
答案 2 :(得分:0)
您可以使用十进制生成器。
def loop_decimal(loop_start_value, loop_stop_value, loop_step_value = 1):
# Input arguments error check
if not loop_step_value:
loop_step_value = 1
loop_start_value = decimal.Decimal(str(loop_start_value))
loop_step_value = decimal.Decimal(str(loop_step_value))
loop_stop_value = decimal.Decimal(str(loop_stop_value))
# Case: loop_step_value > 0
if loop_step_value > 0:
while loop_start_value < loop_stop_value:
yield loop_start_value
loop_start_value += loop_step_value
# Case: loop_step_value < 0
else:
while loop_start_value > loop_stop_value:
yield loop_start_value
loop_start_value += loop_step_value
调用生成器会产生:
for x in (loop_decimal(0.1, 0.9, 0.1)):
print(x)
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
要将浮点数转换为精确的十进制值,请在str()
命令中使用decimal.Decimal()
。
十进制。十进制(str(float_value))
如果您将None或0.0传递给step参数,则将使用默认值1。
这适用于递增和递减循环。