![変数を数字で割りますか? [コピー]](https://linux33.com/image/52297/%E5%A4%89%E6%95%B0%E3%82%92%E6%95%B0%E5%AD%97%E3%81%A7%E5%89%B2%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
デフォルトでは、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 移植可能でなければなりません。