web-dev-qa-db-ja.com

変数を数値で割りますか?

基本的に、センチメートルをインチに変換する必要があります。これは、面積をセンチメートル単位で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を使用する必要がありますか?

2
Strobe_

かもしれませんが、これは定数なので、これも同様に機能するはずです。

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

これは、20桁を超えるような大きな数値を扱う場合にいくつかの困難を伴いますが、多くの場合、それは許容されます。

これにより、結果が自動的に小数点以下2桁に制限されて丸められます。つまり、乗算後の小数点以下の桁数ではありません。次に、結果を文字列として処理します。最初に結果から最後の2文字を削除し、小数点を挿入してから、後で再び追加します。

これはPOSIXポータブルでなければなりません。

6
mikeserv