zoukankan      html  css  js  c++  java
  • Shell中数学计算/运算

    shell中的赋值和操作默认都是字符串处理。

    1)使用let(只能进行整数运算)
    var=1
    let "var+=1"
    echo $var
    输出结果为2
    注意:
    a)let几乎支持所有的运算符
    b)方幂运算应使用“**”
    c)参数在表达式中直接访问,不必加$
    d)一般情况下算数表达式可以不加双引号,但是若表达式中有bash中的关键字则需加上
    e)let后的表达式只能进行整数运算

    2)使用(())
    var=1
    ((var+=1))
    echo $var
    输出结果为2
    注意:
    (())的使用方法与let完全相同

    3)使用$[]
    var=1
    var=$[$var+1]
    echo $var
    输出结果位2
    注意:
    a)$[]将中括号内的表达式作为数学运算先计算结果再输出
    b)对$[]中的变量进行访问时前面需要加$
    c)$[]支持的运算符与let相同,但也只支持整数运算

    4)使用expr
    var=1
    var=`expr $var + 1`
    echo $var
    输出结果为2
    注意:
    a)expr后的表达式个符号间需用空格隔开
    b)expr支持的操作符有: |、&、<、<=、=、!=、>=、>、+、-、*、/、%
    c)expr支持的操作符中所在使用时需用进行转义的有:|、&、<、<=、>=、>、*
    e)expr同样只支持整数运算

    5)使用bc(可以进行浮点数计算)
    var=1
    var=`echo "$var+1"|bc`
    echo $var
    输出结果为2
    介绍:
    bc是linux下的一个简单计算器,支持浮点数计算,在命令行下输入bc即进入计算器程序,而我们想在程序中直接进行浮点数计算时,利用一个简单的管道即可解决问题。
    注意:
    1)bc支持除位操作运算符之外的所有运算符。
    2)bc中要使用scale进行精度设置
    3)浮点数计算实例
    var=3.14
    var=`echo "scale=2;$var*3"|bc`
    echo $var
    输出结果为9.42

    6)使用awk(可已进行浮点数计算)
    var=1
    var=`echo "$var 1"|awk '{printf("%g",$1*$2)}'`
    echo $var
    输出结果为2
    介绍:
    awk是一种文本处理工具,同时也是一种程序设计语言,作为一种程序设计语言,awk支持多种运算,而我们可以利用awk来进行浮点数计算,和上面bc一样,通过一个简单的管道,我们便可在程序中直接调用awk进行浮点数计算。
    注意:
    1)awk支持除微操作运算符之外的所有运算符
    2)awk内置有log、sqr、cos、sin等等函数
    3)浮点数计算实例
    var=3.14
    var=`echo "$var 2"|awk '{printf("%g",sin($1/$2))}'`
    echo $var
    输出结果为1

    Shell中把浮点数转换为整数:

    var=4.5
    方法一:
    echo ${var%.*} #这个是直接去除小数点及后面所有内容,只用于bash
    方法二:
    echo $var | awk -F. '{print $1}' #以小数点为分隔符取第一个字段(直接去除小数点及后面所有内容)
    方法三:
    echo $var | awk '{print int($0)}' #awk中可直接使用C函数取整(直接去除小数点及后面所有内容)
    方法四:
    echo "scale=0;$var/1"|bc -l #用bc计算(直接去除小数点及后面所有内容)
    方法五:
    printf "%.0f " $var #四舍五入

    REF:

    http://www.jb51.net/article/31232.htm

    http://blog.csdn.net/caoshuming_500/article/details/9569831

  • 相关阅读:
    Python元组、列表、字典
    测试通过Word直接发布博文
    Python环境搭建(windows)
    hdu 4003 Find Metal Mineral 树形DP
    poj 1986 Distance Queries LCA
    poj 1470 Closest Common Ancestors LCA
    poj 1330 Nearest Common Ancestors LCA
    hdu 3046 Pleasant sheep and big big wolf 最小割
    poj 3281 Dining 最大流
    zoj 2760 How Many Shortest Path 最大流
  • 原文地址:https://www.cnblogs.com/emanlee/p/4351889.html
Copyright © 2011-2022 走看看