嗨,我正在尝试使用以下代码生成浮点精度
让 number1=0 number2=0 运算符=+
printf "%0.2f\n" result=$(( number1 $operator number2 ))
该代码在没有 printf 的情况下工作,但我无法弄清楚如何执行负(-)计算和浮点数?
Bash 不支持浮点计算,因此,您可以将要操作的数字乘以与小数一样多的零:
# 10.321 - 123.01
result=$(( 10321 - 123010 ))
echo ${result:0:-3}.${result:${#result} - 3}
或者干脆使用其他工具来执行此操作,例如bc
:
echo "scale=2; 10.321 - 123.01" | bc
此外,您使用的语法无效;你应该有:
printf "%0.2f\n" $(( number1 $operator number2 ))
最后我想通了!
result=$(echo "scale=4; (( $number1 $operator $number2 ))" | bc)