如何在Bash脚本中输出浮点数计算结果?
Bash脚本实现浮点数计算并输出三位小数格式
Bash内置的$(( ))算术扩展仅支持整数运算,会自动截断小数部分,这就是你得到17而非17.929的原因。要实现浮点数计算,需借助外部工具,以下是两种可行方案:
方案一:使用bc工具
bc是支持高精度浮点运算的命令行计算器,通过scale参数指定小数位数:
read var1 # scale=3设置保留3位小数,通过bc计算表达式 result=$(echo "scale=3; $var1" | bc) # 确保输出格式严格为*.xxx(整数结果自动补全三位小数) printf "%.3f\n" "$result"
测试输入5+50*3/20 + (19*2)/7,输出为17.928(bc的精度计算会保留三位小数,若需更精准的四舍五入可结合printf处理)
方案二:使用awk工具
awk原生支持浮点运算,且能直接控制输出的四舍五入格式:
read var1 awk -v expr="$var1" 'BEGIN{printf "%.3f\n", eval(expr)}'
测试输入同一表达式,输出为17.929,完全符合你的预期结果。
内容的提问来源于stack exchange,提问作者ZedZip
相关产品推荐
相关产品推荐

