美文网首页Linux 相关文章程序员
Zsh 开发指南(第七篇 数值计算)

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

作者: 陌辞寒 | 来源:发表于2017-08-29 10:49 被阅读90次

导读

数值计算并非 zsh 的强项,但应付一些简单的场景还是没问题的。并且 zsh 提供一个数值计算库,里边有一些比较常用的数学函数。

整数和浮点数类型

Zsh 中通常不用指定变量类型,但也可以指定。对数值计算来说,区分整数和浮点数是很重要的,不指定变量类型会带来不方便。

# 整数
% integer i=123
# (t) 用于输出变量类型
% echo ${(t)i}
integer

# 浮点数
% float f=123.456
% echo ${(t)f}
float

# 注意一旦指定的变量类型,类型就不会变了,除非再重新指定其他类型,或者用 unset 删除掉 
# 如果把浮点数赋值给整数变量,会取整
% i=12.34
% echo $i
12
% a=-12.34
% echo $a
-12

# 整数是 64 位的带符号整数(在 32 位系统下也是)
% echo $((-2 ** 63)) $((2 ** 63 - 1))
-9223372036854775808 9223372036854775807

# 浮点数是 64 位带符号浮点数(在 32 位系统下也是)
% echo $((-1.79e-308)) $((1.79e308))
-1.79e-308 1.79e+308

运算符

数值计算主要是在 (( )) 或者 $(( )) 中进行的,在 $[ ] 或者 $var[ ](可用于数组索引的计算)中也能进行一部分,这里统一使用小括号。

% integer i=123
% float f=123.456

# $(( )) 会计算后返回数值
% echo $((i*f))
15185.088

# (( )) 用于判断数值比较的结果
% ((i < f && i + 1 > f)) && echo good

# 在 (( )) 中也可以给变量赋值
# (( )) 中的语法类似 c 语言,变量名前不需要 $,等号两边可以有空格
% float result
% ((result = i / f))
% echo $result
9.963063764e-01

运算符列表:

运算符 功能 样例
+ - * / 四则运算 1 + 2 * 3 / 4
** 乘方 3 ** 3.5
% 取余 5 % 3
++ -- 自增、自减 i++(返回 i) ++i(返回 i + 1)
& | ^ 按位与、按位或、按位异或 11 & 13
~ 按位取反 ~15
<< >> 按位左移、按位右移 1 << 3
< <= > >= 大小比较 2 <= 4
== != 相等比较 2 != 4
&& || 逻辑与、逻辑或 2 <= 4 && 1 != 3 || 5 > 0
! 逻辑非 ! 1 > 2
^^ 逻辑异或(两个中只有一个为真) 1 > 0 ^^ 1 < 0
= 赋值 i = 10
+= -= *= /= %= **= &= ^= |= <<= >>= &&= ^^= ||= 复合赋值 i += 10
( ) 调整优先级 (1 + 2 ) * 3
? : 三元运算符 1 > 2 ? 100 : 200
, 逗号运算符(只返回后者) 40, 20 == 20

运算符的优先级和其他编程语言的差不多,不列出了,如果不确定可以加小括号。这部分内容和 c、java、javascript 等语言基本一致。

数学函数

Zsh 包含了一个数学模块,如果需要使用数学函数,需要先加载 zsh/mathfunc 模块。

% zmodload -i zsh/mathfunc

% echo $((sin(0) + ceil(14.4)))
15.0

函数列表:

函数名 功能
abs 求绝对值
ceil 向上取整
floor 向下取整
int 截断取整
float 转换成浮点数
sqrt 开平方
cbrt 开立方
log 自然对数
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_refcard/refcard.pdf

本文不再更新,全系列文章在此更新维护:github.com/goreliu/zshguide

付费解决 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等领域相关问题,灵活定价,欢迎咨询,微信 ly50247。

相关文章

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

    导读 数值计算并非 zsh 的强项,但应付一些简单的场景还是没问题的。并且 zsh 提供一个数值计算库,里边有一些...

  • mac 终端改造

    如何在Windows下像Mac一样优雅开发 使用zsh吧 超强指南:终极 Shell 设置当前用户使用 zsh:c...

  • Android中数值的精确计算

    Android中数值计算的精度 在平常的开发中,会经常进行数值的计算,而如何才能更加准确的得到计算结果是最重要的,...

  • zsh 配置

    zsh+on-my-zsh配置教程指南(程序员必备)【已备份】 [oh-my-zsh让终端好用到飞起~](http...

  • zsh及on-my-zsh配置教程指南

    zsh及on-my-zsh配置教程指南 1、查看系统自带哪些shell cat /etc/shells 2、查看当...

  • 数值计算

    这周组会的内容涉及到数值计算的结果。 老师说,我们一定要进行无量纲化,才能带入公式中进行计算。 这样的结果才算是基...

  • iOS中的高精度数值计算

    前言 在iOS开发中,和价格计算相关的,需要注意计算精度的问题,使用float、double来计算价格数值会出现精...

  • Java工程师之Oracle技术-SQL入门(2)

    分组计算函数和GROUP BY字句 常用分组计算函数 SUM(列) 数值类型,计算和 AVG(列) 数值类型,计算...

  • Excel小技巧:表格中带单位的数值如何计算?

    Excel表格带单位的数值如何计算?我们在计算Excel表格里面的数值时,要是发现Excel表格中需要计算的数值都...

  • 花书第四章笔记

    @[toc] 第四章 数值计算 掌握深度学习中所需要的数值计算相关知识 数值计算[p72-p85] 4.1 上溢和...

网友评论

    本文标题:Zsh 开发指南(第七篇 数值计算)

    本文链接:https://www.haomeiwen.com/subject/yxzndxtx.html