Shell编程—【03】数学运算expr与bc浮点数运算
语法格式
# 方法一
expr $num1 operator $num2
# 方法二
$(($num1 operator $num2))
复制代码
expr 操作符表
操作符 | 含义 |
---|---|
num1 \| num2
|
num1不为空且非0,返回num1;否则返回num2 |
num1 \& num2
|
num1不为空且非0,返回num1;否则返回0 |
num1 \< num2
|
num1小于num2,返回1;否则返回0 |
num1 \<= num2
|
num1小于等于num2,返回1;否则返回0 |
num1 = num2
|
num1等于num2,返回1;否则返回0 |
num1 != num2
|
num1不等于num2,返回1;否则返回0 |
num1 \> num2
|
num1大于num2,返回1;否则返回0 |
num1 \>= num2
|
num1大于等于num2,返回1;否则返回0 |
num1 + num2
|
加 |
num1 - num2
|
减 |
num1 \* num2
|
乘 |
num1 / num2
|
除 |
num1 % num2
|
取余 |
- 注意: | & < > * expr需要使用\转译
- $(( ))不需要转译 注意此种运算方式不支持= 和!= 推荐:只使用 + - * / 和 %
- expr数学运算只能对整数 不支持浮点数
num1=30
num2=50
expr $num1 \> $num2
# 0
expr $num1 \<= $num2
# 1
expr $num1 \* $num2
# 1500
expr $num1 + $num2
# 80# 使用命令替换赋值
num3=`expr $num1 - $num2`
echo $num3
# -20# 使用$$(( ))
num3=$((num1+num2))
echo $num3
复制代码
练习
- 用户输入一个正整数num 然后计算1+2+3+...+num,输出结果
#!/bin/bash
while true
doread -p "Please input a positive number: " num# 做一个数学运算 结果放到垃圾桶expr $num + 1 &> /dev/null# 如果数学运算成功 $? 为 0 如果不成功返回非0 所以可以根据$?来判断整数if [[ $? -eq 0 && $num -gt 0 ]]; thensum=0for((i=1;i<=$num;i++))dosum=`expr $i + $sum`done echo "1+2...$num = $sum"exitelseecho "Number is invalid, pleace try again! "continuefi
done
复制代码
浮点数运算
- bc
- bc是bash内建的运算容器,支持浮点数运算
- 内建变量scale(精确度,可以理解为小数位数)可以设置,默认为0
- bc有的linux内置,有的没有内置 (我使用centos 7.x server 是没有的 可以直接
yum install bc
)
bc操作符对照表
操作符 | 含义 |
---|---|
num1 + num2
|
加 |
num1 - num2
|
减 |
num1 * num2
|
乘 |
num1 / num2
|
除 |
num1 % num2
|
取余 |
num1 ^ num2
|
指数运算 |
演示
echo "23 / 12" | bc
# 1
echo "23.2 + 12" | bc
# 35.2
echo "scale=2; 23.3 / 12" | bc
# 1.94
echo "10 / 3 * 2" | bc
# 6
echo "scale=4; 10 / 3 * 2" | bc
# 6.6666# 加减法小数运算可以不指定scale,但是乘除如果有小数一定要加scale
复制代码
输入两个数相加
#!/bin/bash
read -p "Please input num1:" num1
read -p "Please input num2:" num2
# 加法可以不用指定scale可以小数相加
result=`echo "$num1 + $num2" | bc`echo $result
复制代码
转载于:https://juejin.im/post/5d050a356fb9a07f0b03c0db
Shell编程—【03】数学运算expr与bc浮点数运算相关推荐
- python理解浮点数运算的误差_Python 浮点数运算
浮点数用来存储计算机中的小数,与现实世界中的十进制小数不同的是,浮点数通过二进制的形式来表示一个小数.在深入了解浮点数的实现之前,先来看几个 Python 浮点数计算有意思的例子: 0.1 == 0. ...
- shell编程之数学运算
1.基本语法 (1)"$((运算式))"或"$[运算式]" (2)expr + , - , *, /, % 加,减,乘,除,取余 注意:expr运算符间要有空格 ...
- python理解浮点数运算的误差_浮点数运算的机器误差分析
感觉跟专栏主题不是很搭... 不过这是这学期计算物理的作业,还是放上来吧,也算勉强沾边了吧. 用一个浮点数相加的例子来演示计算机在计算时所产生的误差. 在Python中,用0.2+0.4 会得到0.6 ...
- Linux shell编程基础(1) —— 构建基本的shell脚本
1.创建shell脚本文件以及执行shell脚本方法 (1)使用编辑器(如vim)创建一个文件test.sh,文件后缀为.sh. (2)在第一行指定要使用的shell 格式如下 #!/bin/bash ...
- Win32汇编:字符串浮点数运算过程
整理复习汇编语言的知识点,以前在学习<Intel汇编语言程序设计 - 第五版>时没有很认真的整理笔记,主要因为当时是以学习理解为目的没有整理的很详细,这次是我第三次阅读此书,每一次阅读都会 ...
- 浮点数运算的的规格化
转自:http://blog.sina.com.cn/s/blog_9e1c5ee30101axuy.html 在尾数用补码表示时,规格化浮点数应满足尾数最高数位与符号位不同,如相同就是不满足规格化. ...
- python浮点数怎么运算_为什么说浮点数缺乏精确性? python中浮点数运算问题
我想从两个角度回答: 一:十进制小数转化成二进制小数的方法.(简单举例,看完就可以自己用笔进行运算.) 二:如何解决python中的浮点数运算问题. 关于一: 拿1.375这个十进制数举例,pytho ...
- linux shell数学计算器,技术|使用 GNU bc 在 Linux Shell 中进行数学运算
在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...
- linux中bc用法英文,使用GNU bc在Linux Shell中进行数学运算
在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言. 大多数 POSIX 系统带有 GNU bc,这是一种任意精度的数字处理语言.它的语法类似于 C,但是它也支持交互式执行语句 ...
- Shell数学计算(算术运算,加减乘除运算)
声明: 本篇博客的学习途径主要为以下网站和课堂讲解,发博客目的仅为学习使用,在该博客的基础上做了一定程序的简略和修改. 参考博客 : 原文链接:http://c.biancheng.net/shell ...
最新文章
- C 语言的基本数据类型
- 多重循环控制(难点重点)
- foreach 循环达到条件的第一次就停止_是否应该停止在JavaScript代码中使用forEach()?...
- 斗地主AI算法——第七章の被动出牌(1)
- Manjaro下的实用命令搜集
- Nginx核心模块ngx_http_proxy_module与nginx反向代理、负载均衡详解
- HDU-2203-亲和串(kmp)
- ps 毛发 边缘_用PS给老旧黑白照片上色,亲妈级教学,简单实用,轻松搞定!
- owa outlook使用中的一些问题-陆续添加
- 关于技术问题的请教和解决步骤
- ip-sysctl.txt 文件
- Extra Credits: Project Ten Dollar 10
- Linux下conda 安装以后 activate无法使用
- 新疆大学ACM-ICPC程序设计竞赛五月月赛(同步赛)
- android 问题-----Please execute 'adb uninstall com.newland.securityclient' in a shell.
- ng-zorro里的“Descriptions描述列表”使用
- mini LED 背光驱动芯片的发展
- Kubernetes学习笔记(一):Pod详解:Pod配置、Pod生命周期、Pod调度、容器设计模式
- 小程序这6个坑绝对不能踩
- lof基金溢价率php源码,一文读懂LOF基金套利策略 LOF是球友们很喜欢的一类基金,这类基金不仅可以在场内进行高效买卖,而且还可以进行折溢价套利。不过这里面牵扯到很多细节,... - 雪球...