【问题标题】:How do I divide in the Linux console?如何在 Linux 控制台中进行划分?
【发布时间】:2010-11-08 10:55:08
【问题描述】:

我有变量,我想找到一个除以另一个的值。我应该使用哪些命令来执行此操作?

【问题讨论】:

标签: linux math command-line divide


【解决方案1】:

在 bash shell 中,用$(( ... )) 包围算术表达式

$ echo $(( 7 / 3 ))
2

虽然我认为你仅限于整数。

【讨论】:

  • 是的,bash 仅限于整数数学。
【解决方案2】:
echo 5/2 | bc -l

2.50000000000000000000

'bc' 中的这个 '-l' 选项允许浮动结果

【讨论】:

  • 酷;使用-l,默认情况下您会得到 20 个小数位并且会加载一个定义附加函数(例如正弦)的数学库;要明确指定小数位数,请在表达式前面加上scale={numPlaces};(也),如@user1504475 的答案所示。换句话说:-l 是指定 scale=20; 的便捷替代方案,但由于加载库而导致性能成本 - 不过,对现实世界的影响似乎可以忽略不计。
【解决方案3】:

更好的方法是使用“bc”,一个任意精度的计算器。

variable=$(echo "OPTIONS; OPERATIONS" | bc)

例如:

my_var=$(echo "scale=5; $temp_var/100 + $temp_var2" | bc)

其中“scale=5”是准确度。

man bc 

附带几个使用示例。

【讨论】:

  • 酷;需要注意的一件事:不设置 scale 默认为整数除法 - 除非您指定 -l,如下面的 @raytrace 注释,这显然默认为您提供 20 个小数位,但还会加载具有附加功能的库。
【解决方案4】:

您可以使用awk,这是一种专为数据提取而设计的实用程序/语言

例如1.2/3.4

>echo 1.2 3.4 | awk '{ print $2/$1 }'
0.352941

【讨论】:

    【解决方案5】:

    我仍然更喜欢使用 dc,它是一个 RPN 计算器,因此以 4 位精度将 67 除以 18 的快速会话看起来像

    >dc
    4k
    67
    18/p
    3.7222
    q
    >
    

    显然,更多可用:man dc

    【讨论】:

    • 一些指针可能会节省一些前往man 的旅行:RPN = 反向波兰表示法;简而言之:首先输入操作数,然后输入运算符。需要一个终止的p 来输出结果。上述计算的非交互版本为:dc -e '4k 67 18 / p'。警告:不设置精度({numPlaces}k)默认为 0,即整数除法。
    【解决方案6】:

    在 bash 中,如果您的除法中不需要小数,您可以这样做:

    >echo $((5+6))
    11
    >echo $((10/2))
    5
    >echo $((10/3))
    3
    

    【讨论】:

      【解决方案7】:

      我假设 Linux 控制台 是指 Bash

      如果XY 是您的变量,$(($X / $Y)) 会返回您要求的内容。

      【讨论】:

      • 变量不需要 $'s
      【解决方案8】:

      使用 bash 将 $a 除以 $b 的整数除法示例:

      echo $((a/b))
      

      【讨论】:

        【解决方案9】:

        您可以使用 raytrace 的答案进行其他操作。您可以使用反引号来使用另一个 shell 调用的标准输出,然后进行一些计算。例如,我想知道几个文件中前 100 行的文件大小。 wc -c 的原始大小以字节为单位,我想知道千字节。这是我所做的:

        echo `cat * | head -n 100 | wc -c` / 1024 | bc -l
        

        【讨论】:

          【解决方案10】:

          你应该尝试使用:

          echo "scale=4;$variablename/3"|bc
          

          【讨论】:

            【解决方案11】:

            你也可以使用 perl -e

            perl -e 'print 67/8'
            

            【讨论】:

              【解决方案12】:

              我也遇到了同样的问题。整数除法很容易,但十进制数并不那么容易。 如果您有 2 个数字,例如 3.14 和 2.35,然后除以这些数字, 代码将是 Division=echo 3.14 / 2.35 | bc 回声“$部门” 报价不同。不要混淆,它位于键盘上的 esc 按钮下方。 唯一的区别是 | bc 和这里的 echo 用作算术计算的运算符而不是打印。 所以,我添加了 echo "$Division" 来打印值。请让我知道这对你有没有用。谢谢。

              【讨论】:

              • 这里没有显示引号,所以,只需将引号(``)放在 = 和 bc 之后。
              • 那些不是引号。它们是尖锐的口音。它们没有显示,因为 StackOverflow 使用它们来突出显示代码 sn-ps some code here 只是包裹在尖锐的口音中。
              猜你喜欢
              • 2013-01-13
              • 2012-12-28
              • 1970-01-01
              • 2011-10-19
              • 1970-01-01
              • 2011-09-04
              • 1970-01-01
              • 2021-06-26
              相关资源
              最近更新 更多