for {set i 0} {$i < 5} {incr i} {
puts "I inside first loop: $i"
}
是否可以将i
增加.5而不是1?
现在上面的代码提供了以下输出:
但我需要这样的事情:
......等等
答案 0 :(得分:3)
默认情况下,incr
在没有提及特定数字时递增1个单位。
incr i 2
每次迭代时,会将i
增加2。
incr i -1
每次迭代时,会将i
减1。
您可以将数字更改为您需要的数字。
唯一的问题是你只能增加一个整数。所以你必须使用0.5的其他东西。您可以使用expr
吗?
for {set i 0} {$i < 5} {set i [expr {$i+0.5}]} {
puts "I inside first loop: $i"
}
编辑:实际上,Donal的答案更好,因为它没有舍入错误:)
答案 1 :(得分:3)
Tcl的incr
命令只处理整数值。获取循环值的步骤乘以某个小数值的推荐方法是使用整数循环计数器,然后从中计算小数值:
for {set i_int 0} {$i_int < 5} {incr i_int} {
set i [expr {$i_int * 0.5}]
puts "I inside first loop: $i"
}
当分数步长不是2的幂的简单倍数时,这很重要;虽然0.5
可以用二进制浮点运算完全表示(毕竟它是 -1 )0.1
可以&#t; t(就像 1 / 3 无法精确写入有限数量的小数位。)