1

以下の構文に問題があります。2 つの数値の除算を 10 進数で出力したいのですが、4 と 5 を入力すると、他のすべてを除算すると、出力は 0.8 ではなく 0 になります。

case $ch in
  1)sum=`expr $n1 + $n2`
   echo "Sum ="$sum;;
  2)sum=`expr $n1 - $n2`
    echo "Sub = "$sum;;
  3)sum=`expr $n1 \* $n2`
    echo "Mul = "$sum;;
  4)sum=`expr $n1 / $n2`
    echo "Div = "$sum;;
  *)echo "Invalid choice";;
esac
4

2 に答える 2

2

Exprは整数演算のみを実装します。dcのような他のものを使用することを検討してください。

于 2012-05-03T11:00:52.357 に答える
2

を使用しbcます。

sum=`echo -e "scale=5\n$n1/$n2" | bc`

あなたの部門はこれで与え0.8ます。

于 2012-05-03T11:02:47.347 に答える