1

嗨,我正在尝试使用以下代码生成浮点精度

让 number1=0 number2=0 运算符=+

printf "%0.2f\n" result=$(( number1 $operator number2 ))

该代码在没有 printf 的情况下工作,但我无法弄清楚如何执行负(-)计算和浮点数?

4

2 回答 2

1

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 ))
于 2013-01-19T01:42:33.990 回答
0

最后我想通了!

result=$(echo "scale=4; (( $number1 $operator $number2 ))" | bc)
于 2013-01-19T02:13:58.817 回答