You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Bash中使用算术扩展运算符时如何正确进行乘除运算

Shell算术计算异常原因

你遇到的问题核心是绝大多数POSIX标准的shell(包括Bash、Dash等默认环境)的算术扩展仅支持整数运算,所有小数运算结果会直接截断取整。你示例中的75 / 100在整数运算规则下会被计算为0,因此最终grade的结果始终为0,和写法格式无关。

解决方法

方案1:仅需要整数结果

调整运算顺序,先执行乘法再执行除法,避免中间步骤出现小于1的数值被截断:

# 算术扩展内可省略变量前的$符号,写法更简洁
grade=$(( x * y / 100 ))

该写法先计算25 * 75 = 1875,再除以100得到整数结果18,符合整数分值的计算需求。

方案2:需要保留小数精度

shell本身不支持浮点运算,需要调用外部计算工具实现:

  • 使用bc工具计算(可自定义小数位数):
# scale=2 表示保留2位小数,可根据需求调整数值
grade=$(echo "scale=2; $x * $y / 100" | bc)

计算结果为18.75。

  • 使用awk工具计算:
grade=$(awk -v x="$x" -v y="$y" 'BEGIN{printf "%.2f", x * y / 100}')

内容的提问来源于stack exchange,提问作者ShaheerL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 06:06:02