当前位置: 首页 > Linux

zsh开发指南(第七篇数值计算)

时间:2023-04-06 19:10:49 Linux

指南数值计算不是zsh的强项,但是应对一些简单的场景还是没问题的。并且zsh提供了一个数值计算库,里面包含了一些常用的数学函数。Integer和Float类型Zsh中通常不指定变量类型,但可以指定。对于数值计算,区分整数和浮点数很重要,不指定变量类型很不方便。#integer%integeri=123#(t)用于输出变量类型%echo${(t)i}integer#浮点数%floatf=123.456%echo${(t)f}float#注意一次指定的变量类型,类型不会改变,除非你重新指定其他类型,或者用unseta-12删除它#整数是64位有符号整数(32位系统也是如此)%echo$((-2**63))$((2**63-1))-92233720368547758089223372036854775807#浮点数为64位有符号浮点数(32位系统下也是)%echo$((-1.79e-308))$((1.79e308))-1.79e-3081.79e+308运算符的数值计算主要在(())or$(())也可以部分在$[]or$var[](可用于数组下标计算),此处统一使用括号。%integeri=123%floatf=123.456#$(())会返回计算后的值%echo$((i*f))15185.088#(())用于判断数值比较的结果%((if))&&echogood#也可以给(())中的变量赋值#(())中的语法类似于C语言,前面不需要$变量名,等号两边可以有空格%floatresult%((result=i/f))%echo$result9.963063764e-01运算符列表。(为避免表中的印刷错误,|由I代替。)运算符函数示例+-*/四次算术运算1+2*3/4**3次方**3.5%余数5%3++--自增自减i++(returni)++i(returni+1)&I^按位与,按位或,按位异或11&13~按位取反~15<<>>按位左移,按位右移1<<3<<=>>=大小比较2<=4==!=相等比较2!=4&&II逻辑与,逻辑或2<=4&&1!=3II5>0!逻辑非!1>2^^逻辑异或(两者只有一个为真)1>0^^1<0=赋值i=10+=-==/=%=*=&=^=I=<<=>>=&&=^^=II=复合赋值i+=10()调整优先级(1+2)*3?:三元运算符1>2?100:200,逗号运算符(只返回后者)40,20==20该运算符的优先级与其他编程语言类似,这里不再一一列举。如果不确定,可以添加括号。这部分内容与c、java、javascript等语言基本一致。数学函数Zsh包含一个数学模块,如果需要使用数学函数,需要先加载zsh/mathfunc模块。%zmodload-izsh/mathfunc%echo$((sin(0)+ceil(14.4)))15.0函数列表。函数名称函数abs求绝对值ceil向上舍入floor向下舍入inttruncate向上舍入float转换为浮点数sqrt平方根cbrtcubelog自然对数log10常用对数rand48随机数更多功能。acos,acosh,asin,asinh,atan,atanh,cos,cosh,erf,erfc,exp,expm1,fabs,gamma,j0,j1,lgamma,log1p,logb,sin,sinh,tan,tanh,y0,y1,ilogb,signgam,copysign,fmod,hypot,nextafter,jn,yn,ldexp,scalb参考http://www.bash2zsh.com/zsh_r...本文不再更新,全系列文章更新和维护在这里:github.com/goreliu/zshguide付费解决Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua等领域相关问题,定价灵活,欢迎咨询,微信ly50247。