2014-05-14 71 views
0
for {set i 0} {$i < 5} {incr i} { 
    puts "I inside first loop: $i" 
} 

是否可以通過.5而不是1增加i如何在使用for循環時將變量增加2?

現在上面的代碼提供如下輸出:

  • 我內側第一環:0
  • 我內側第一環:1
  • 我內側第一環:2
  • 我內側第一環:3
  • 我裏面第一個循環:4

,但我需要的東西像這樣:

  • 我裏面第一個循環:0
  • 我裏面第一個循環:.5
  • 我裏面第一個循環:1

...等等

回答

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" 
} 

編輯:其實,敦爾的答案是更好,因爲它不具備的舍入誤差:)

+0

如何增加0.5? – user3016320

+0

@ user3016320我正在編輯:) :) – Jerry

+0

非常感謝..其工作正常 – user3016320

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" 
} 

這是重要的,當分數步就不是一個簡單的多二的冪次;而0.5可以以二進制浮點算術精確表示(它是畢竟2 -10.1不能(正如/不能被精確在有限數量的小數位的寫入)。