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
03-Tcl数学表达式及expr命令的更多相关文章
- linux下数学运算器:expr命令(shell中完成数学运算)
expr用法 expr命令一般用于整数值,但也可用于字符串.一般格式为: expr argument operator argument expr也是一个手工命令行计数器. $expr 10 ...
- SHELL脚本--数学运算和bc命令
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 使用let.(()).$(())或$[]进行基本的整数运算,使 ...
- Tcl数学运算
expr 数学表达式 Tcl支持的数学操作符(优先级按照从高到低): -一元负号 +一元正号 ~按位取反 !逻辑非 *乘 /除 %取余 +加号 -减号 <<左移位 >>右移位 ...
- linux shell let, expr 命令详解
linux命令之let.exprshell程序中的操作默认都是字符串操作,在运行数学运算符的时候可能得到意想不到的答案: var=1var=$var+1echo $var 将输出 1+1从这个例子中可 ...
- expr 命令
求表达式变量的值.expr 命令读入 Expression 参数,计算它的值,然后将结果写入到标准输出. 用法:expr Expression Expression 参数规则: 用空格隔开每个项. 用 ...
- 【转】linux expr命令参数及用法详解
在抓包过程中,查看某个设定时间内,数据上下行多少,用命令expr 计算! --------------------------------------------------------------- ...
- linux expr命令参数及用法详解
expr用法 expr命令一般用于整数值,但也可用于字符串.一般格式为: #expr argument operator argument expr也是一个手工命令行计数器. #$expr 10 + ...
- SHELL脚本--expr命令全解
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html expr命令可以实现数值运算.数值或字符串比较.字符串匹配.字 ...
- Linux之expr命令详解
expr命令: expr命令是一个手工命令行计数器,用于在UNIX/LINUX下求表达式变量的值,一般用于整数值,也可用于字符串. –格式为: expr Expression(命令读入Expressi ...
- (转)linux expr命令参数及用法详解
linux expr命令参数及用法详解 原文:http://blog.csdn.net/tianmohust/article/details/7628694 expr用法 expr命令一般用于整数值, ...
随机推荐
- 数据智慧:C#中编程实现自定义计算的Excel数据透视表
前言 数据透视表(Pivot Table)是一种数据分析工具,通常用于对大量数据进行汇总.分析和展示.它可以帮助用户从原始数据中提取关键信息.发现模式和趋势,并以可视化的方式呈现. 在数据透视表中,数 ...
- MySQL|MySQL执行计划
使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 每列的内容 列 含义 ...
- 序列化性能测试:jdk和fastjson
序列化性能测试:jdk和fastjson 我开发一个认证授权框架时,需要添加数据库存储token或者会话,于是想测试使用jdk的blob存储解析快还是存储string的json序列化解析快,从而选择他 ...
- Json Schema介绍 和 .net 下的实践 - 基于Lateapexearlyspeed.Json.Schema - 基础1 - type关键字和string类型
本系列旨在介绍Json Schema的常见用法,以及.net实现库Lateapexearlyspeed.Json.Schema的使用 这篇文章将介绍Json Schema中的type关键字,和stri ...
- MySQL思维导图:MySQL的架构介绍
MySQL的架构介绍(思维导图形式) MySQL简介 概述 MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性. ...
- 实践解析可视化开发平台FlinkSever优势
摘要:华为Flink可视化开发平台FlinkServer作为自研服务,能够提供比原生flinksql接口更强的企业级特性,比如任务的集中管理,可视化开发,多数据源配置等. 本文分享自华为云社区< ...
- html5鼠标拖动排序及resize实现方案分析及实践
对列表进行拖动排序,尺寸改变.之前一般会使用jQuery-UI.其通过mousedown.mousemove.mouseup这三个事件来实现页面元素被鼠标拖拽的效果.vue-drag-resize v ...
- 火山引擎ByteHouse:云原生数据库如何提升MySQL兼容性?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 当前各类软件层出不穷,单独某一款软件往往难以满足企业应用需求,一般都需要与各类软件组合使用,这时软件生态兼容性就显 ...
- 火山引擎 DataTester 3 大功能升级:聚焦敏捷、智能与易用,帮助企业降本增效
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎数智平台(VeDI)全面升级旗下 A/B 测试产品 DataTester,发布全新功能"M ...
- OpenvSwitch系列之九 Group表
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...