zoukankan      html  css  js  c++  java
  • linux中的计算器

    参考:http://c.biancheng.net/view/2680.html

    windows系统安装时会自带计算器,在cmd中运行calc即可打开。那么linux系统中有没有计算器呢?答案是肯定的。

    linux下的图形计算器

    linux系统一般也会默认安装一个图形界面的计算器,例如红帽系统默认安装的是gcalctool。假如在一个图形桌面环境中需要一个计算器时,在终端中运行gcalctool即可打开。
    如果系统没有运行桌面环境,那是否有一个支持命令行的计算器呢?

    linux下的命令行计算器

    bc是任意精度计算器,官方对它的描述是“an arbitrary precision calculator language”,一种支持任意精度计算的计算器语言,它支持变量、数组、输入输出、分支结构、循环结构、函数等基本的编程元素。bc可以在交互环境下使用,也可以再shell编程中使用。

    * 交互模式下使用bc

    在终端中输入bc --help,可以查看bc的使用说明:

    [release@redhat59-211 ~]$ bc -h
    usage: bc [options] [file ...]
      -h  --help         print this usage and exit,显示帮助
      -i  --interactive  force interactive mode,强制进入交互模式
      -l  --mathlib      use the predefine math routnes,加载数学库
      -q  --quiet        don't print initial banner,不打印版本信息
      -s  --standard     non-standard bc constructs are errors
      -w  --warn         warn about non-standard bc constructs
      -v  --version      print version information and exit,显示版本
    

    bc有四个常用的内置变量,如下表所示:

    变量名 作用
    scale 指定精度,即小数点后的位数,默认为0,所以默认执行1/2,结果为0
    ibase 指定输入的数字的进制,如ibase=2
    obase 指定输入数字的进制,如果需要设置ibase和obase,应先设置obase
    last 表示最近打印的数字

    在终端中输入bc,可以进行bc的交互模式,然后输入想要计算的表达式即可。示例如下图,可见bc支持变量、函数,功能还是挺强大的。

    [release@redhat59-211 ~]$ bc
    bc 1.06
    Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    1+1
    2
    n=2
    n+1
    3
    sqrt(9)
    3
    define myadd(a,b){
        return a+b;
    }
    myadd(1,2)
    3
    last
    3
    1/2
    0
    scale=2
    1/2
    0.50
    obase=2
    ibase=10
    10
    1010
    

    此外,如果想计算正弦、余弦、正切等,可以在启动bc时加-l参数,如bc -l,这样就引入了数学库,可以使用s(1)计算1的正弦值。

    函数名 作用
    s(x) 计算正弦值,x为弧度值
    c(x) 计算余弦值
    a(x) 计算反正切值
    l(x) 计算x的自然对数
    e(x) 计算e的x次方
    j(n,x) 贝塞尔函数,计算从n到x的阶数
    [root@localhost bin]# bc -l
    bc 1.06.95
    Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
    This is free software with ABSOLUTELY NO WARRANTY.
    For details type `warranty'. 
    s(1)
    .84147098480789650665
    c(1)
    .54030230586813971740
    s(1)*s(1)+c(1)*c(1)
    .99999999999999999999
    
    * shell脚本中使用bc计算器

    在shell脚本中可以借助管道或者输入重定向来使用bc计算器。

    • 借助管道使用bc
      echo "expression"|bc,其中expression是计算的数学表达式。
      示例:var=$(echo "1+1"|bc),将1+1的计算结果赋值给var变量
    [release@redhat59-211 ~]$ echo "10^2"|bc
    100
    [release@redhat59-211 ~]$ var=$(echo "10^2"|bc)
    [release@redhat59-211 ~]$ echo $var
    100
    [release@redhat59-211 ~]$ echo "$var*2"|bc
    200
    [release@redhat59-211 ~]$ echo "obase=2;10"|bc  10转换为2进制
    1010
    
    • 借助重定向使用bc
      使用方法:
    var=$(bc <<EOF
    expressions
    EOF
    )
    

    示例:

    [release@redhat59-211 ~]$ var=$(bc <<EOF
    > obase=10;
    > ibase=16;
    > F
    > EOF
    > )
    [release@redhat59-211 ~]$ echo $var
    15
    

    更多例子请参考:
    https://blog.csdn.net/pdcxs007/article/details/48222663#示例一指定pi的值

  • 相关阅读:
    1250. Check If It Is a Good Array
    380. Insert Delete GetRandom O(1)
    378. Kth Smallest Element in a Sorted Matrix
    341. Flatten Nested List Iterator
    387. First Unique Character in a String
    454. 4Sum II
    D
    勇敢的妞妞 ( 状压 + 思维)
    P1879 [USACO06NOV]玉米田Corn Fields (状压dp入门)
    G
  • 原文地址:https://www.cnblogs.com/21summer/p/11007837.html
Copyright © 2011-2022 走看看