Linux下进行整数和浮点数运算

$((...))和expr对比表

特性 $((a+b+c)) expr $a+$b+$c
性能 ⚡ 极快(内置) 🐌 慢(外部命令)
语法 简洁直观 繁琐,需要转义
功能 丰富(位运算、自增等) 有限
安全 好(变量安全) 差(变量展开问题)
错误处理 明确 可能静默失败
兼容性 Bash/Ksh/Zsh 几乎所有shell

最佳实践: 除非需要在 POSIX sh 中保持最大兼容性,否则总是使用 $(( )) 进行算术运算。

注:

bash 复制代码
# 默认 scale=0,只输出整数
echo "5/2" | bc        # 输出: 2(没有小数)

# 设置 scale=2,保留2位小数
echo "scale=2; 5/2" | bc  # 输出: 2.50

$((...))和bc对比表

运算类型 Bash 方法 示例 注意
整数运算 $(( )) echo $((5/2)) 输出 2
小数运算 bc `echo "5/2" bc`
复杂数学 bc -l `echo "s(1)" bc -l`
高性能 awk awk 'BEGIN{print 5/2}' 适合批量处理
格式化 printf printf "%.2f" 2.5 只格式化,不计算

建议:

  • 如果只需要整数运算,使用 $(( ))(最快)
  • 如果需要小数运算,使用 bcawk
  • 如果大量小数运算,考虑使用 awk 或切换到 Python/Perl 等脚本语言
  • 考虑使用 Zsh 如果你经常需要浮点运算
相关推荐
野老杂谈1 年前
2.3 Python 基本运算符
开发语言·python·python基础·编程入门·运算符·算术运算·逻辑运算
逼子格2 年前
28、matlab算数运算汇总1:加、减、乘、除、幂、四舍五入
java·服务器·前端·算法·算术运算
q5119514512 年前
verilog语法基础-算术运算
fpga开发·verilog基本语法·算术运算·算术运算电路结构