変数を数字で割りますか? [コピー]

変数を数字で割りますか? [コピー]

デフォルトでは、cmをインチに変換する必要がありますが、cm単位の領域を2.54で割ってこれを実行しようとしています。

しかし、私はそれを動作させることはできません。

echo "please enter width and then height"

read width
read height

area=$(($width * $height))
inchesarea=$((area / 2.54))

echo $area
echo $inchesarea

これを使うべきですかbc

答え1

これもできますが、定数なので、次のようにしても機能します。

r=$(((area*10000)/254)) ; printf %d.%d  ${r%??} ${r#${r%??}}

これは大きな数字(例えば20桁以上)を扱うときに少し難しいことを引き起こしますが、多くの場合許容されます。

これは自動的に結果を小数点以下の2桁に制限して丸めます。結局乗算した後は小数点ではありません。次に結果を文字列として扱います。まず、結果から最後の2文字を削除し、小数点数字を挿入して再度追加します。

POSIX 移植可能でなければなりません。

関連情報