Tcl中的數學運算

  • 2019 年 10 月 31 日
  • 筆記

Tcl中的數學運算,即便是很簡單的兩個數相加,都要用到命令expr,看下面這個例子。在這個例子中,計算x1與x2之和時通過expr命令實現。可以看到如果直接寫{$x1 + $x2},給變量y1賦值,此時,Tcl解釋器把它們當作字符串處理,並不會完成相應的計算。但如果對變量y1使用expr命令,則可得到預期結果。

expr命令所支持的計算操作符是C語言中操作符的一個子集,並且寫法、優先級也和C語言中的完全一致,包括基本計算符(加、減、乘、除、取余)、關係運算符、邏輯運算符、移位運算符、按位邏輯運算符和三重運算符。除了數學計算操作符之外,expr還支持字符串的比較操作。這裡不再羅列這些運算符的含義和使用方法,只給出一些簡單的例子。

這裡特彆強調一下,使用除法操作符時應注意,如果兩個操作數均為整數,那麼結果仍然是整數。只要有一個是浮點數,那麼結果就是浮點數。看下面這個例子。時鐘周期為3ns,對應頻率為333.33MHz。1/$period的結果為0,但1.0/$period和1/double($period)的結果就不是0。

Tcl本身還提供了許多數學函數,包括取整函數(ceil, floor, round等)、三角函數、反三角函數、對數函數和指數函數等。這裡不再一一羅列,只給出一些例子。

最後,介紹一個新的命令incr,這個命令在描述for循環時會經常用到。該命令根據指定的步長來增加或減少參數的值。當步長為負時,減少參數值;當步長為正時,增加參數值。默認步長為+1。另外,incr後面直接跟變量名,並不需要變量置換符$,這也是很多初學者容易疏忽的地方。看下面這個例子。

結論:

-在Tcl中執行數學運算必須使用expr命令

-Tcl中的操作符與C語言保持一致

-Tcl本身提供了很多數學函數