03-Tcl数学表达式及expr命令
3 Tcl书写表达式及expr命令
Tcl提供了有效的数学运算和逻辑运算功能。通过expr可以实现对数学表达式的分析和计算。
3.1 数学与逻辑运算符
运算符 | 说明 |
---|---|
- + ~ ! | 一元减(取负)、一元加(取正)、按位反、逻辑非 |
* / % | 乘、除、取余 |
+ - | 加、减(二元操作符) |
<< >> | 左移、右移(二元操作符) |
< <= >= > | 小于、小于等于、大于等于、大于 |
== != | 布尔等于、不等于 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
&& | 逻辑与 |
|| | 逻辑或 |
x?y:z | 三元表达式,x满足为y,不满足为z |
3.2 数学函数
函数名 | 说明 | 举例 |
---|---|---|
abs(arg) | 取绝 | set a -10 # a = -10 ; set a [expr abs($a)] |
acos(arg) | 反余弦 | |
asin(arg) | 反正弦 | |
atan(arg) | 反正切 | |
atan2 | 比值取反正切 | |
ceil(arg) | 向上取整 | |
cos(arg) | 余弦 | |
cosh(arg) | 双曲余弦 | |
double(arg) | 转换双精度 | |
exp(arg) | exp运算e的幂 | |
floor(arg) | 向下取整,与ceil相对 | |
fmod | 取余(结果为浮点型) | |
hypot(x,y) | 根据直角三角形两直角边长度计算出斜边长度 | |
int(arg) | 取整 | |
log(arg) | 自然对数 | |
log10(arg) | 以10为底的度数 | |
pow | 幂运算 | |
rand() | 取0-1之间的随机实数 | set a [expr 10*[expr rand()]] |
round(arg) | 四舍五入取整 | set a [expr round(10.5)] |
sin(arg) | ||
sinh(arg) | ||
sqrt(arg) | 求二次根 | |
srand(arg) | 以整数arg为随机数生成器的种子产生随机数 | |
tan(arg) | ||
tanh(arg) |
3.3算数运算举例
set var1 5
set var2 3
set res [expr $var1 /$var2] #var1和var2都是整数结果为整数
=>1
set var1 5.0
set res [expr $var1 /$var2] # var1是浮点数,所以结果为浮点数
=>1.66666666667
set var1 3
incr var1 2 # incr a b 将b加到a上,a,b必须都是整数,
# 更改a原有的值
=>5
puts $var1
=>5
incr var1 -4 # var1加上-4,var1的值现在为1
=>1
3.4 incr命令
incr命令根据指定的步长来增加或减少参数的值。当步长为负时,减少参数值;当步长为正时,增加参数值。默认步长+1。
incr varName ?step?
set a 10
incr a
=> a=11
set a 10
incr a -1
=> a=9