【问题标题】:Arithmetic with variable [duplicate]带变量的算术[重复]
【发布时间】:2014-07-04 00:09:16
【问题描述】:

我需要用 bash 执行一些算术运算。它是这样的

VariableA = (VariableB-VariableC) / 60

Variable A 应近似为小数点后 2 位

我不知道其中哪一个是正确答案(手头没有 linux 服务器 atm 来测试)

VariableA = $((VariableB-VariableC)/60)

VariableA = $(((VariableB-VariableC)/))/60)

如果有人也可以帮助我了解如何在不使用 bc 等第三方工具的情况下将变量 A 舍入到小数点后 2 位,那就太好了

【问题讨论】:

  • 你的行都不行。在 shell 脚本中赋值语句就像VarA=Foo= 之前/之后没有空格
  • 语法似乎是 $((SOME_CALC)),其中 SOME_CALC 是您的计算。所以你的两个例子都错了,试试$(((VariableB-VariableC) / 60))
  • 如果你想在没有 bash shell 的情况下测试你的 bash 代码,你可以使用 Compile Online 的 bash shell 部分。
  • @Kent 我知道...我只是在写这篇文章时错误地放了空格。@stuXnet 谢谢...

标签: bash math


【解决方案1】:

bash 本身只能计算整数值,因此如果您需要使用固定位数的小数,您可以移动小数点(这就像以美分而不是美元或欧元计算)。然后只有在输出中,您需要确保在您的号码的最后两位数字之前有一个.

a=800
b=300
result=$((a*100/b))  # factor 100 because of division!
echo "${result:0:-2}.${result: -2}"

将打印2.66

如果你想用浮点数进行计算,你应该使用像bc这样的工具来为你做这件事:

bc <<<'scale=2; 8.00/3.00'

将打印出2.66

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2014-05-05
    • 2023-03-20
    • 2015-10-27
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多