私はそれが本当にばかげた質問であることを知っていますが、bashでこれを行う方法がわかりません:
20 / 30 * 100
そうあるべきですが、float をサポートしていないため、66.67
expr は と言っています。0
expr を置き換えてこの等号を実行できる Linux のコマンドはどれですか?
私はそれが本当にばかげた質問であることを知っていますが、bashでこれを行う方法がわかりません:
20 / 30 * 100
そうあるべきですが、float をサポートしていないため、66.67
expr は と言っています。0
expr を置き換えてこの等号を実行できる Linux のコマンドはどれですか?
bc
がこれを行いますが、順序が重要です。
> echo "scale = 2; 20 * 100 / 30" | bc
66.66
> echo "scale = 2; 20 / 30 * 100" | bc
66.00
または、特定のケースでは:
> export ach_gs=2
> export ach_gs_max=3
> x=$(echo "scale = 2; $ach_gs * 100 / $ach_gs_max" | bc)
> echo $x
66.66
どの方法を選択しても、これはあなたの生活を楽にする機能として含める機が熟しています:
#!/bin/bash
function pct () {
echo "scale = $3; $1 * 100 / $2" | bc
}
x=$(pct 2 3 2) ; echo $x # gives 66.66
x=$(pct 1 6 0) ; echo $x # gives 16
ただawkでそれをしなさい
# awk 'BEGIN{print 20 / 30 * 100}'
66.6667
変数に保存します
# result=$(awk 'BEGIN{print 20 / 30 * 100}')
# echo $result
66.6667
私は一般的にperlを使用します:
perl -e 'print 10 / 3'
bashのmanページで報告されているように:
シェルでは、特定の状況下で算術式を評価できます...評価は、オーバーフローのチェックなしで固定幅の整数で行われますが、0 による除算はトラップされ、エラーとしてフラグが立てられます。
より良い部分的な結果を得るために、前に 100 を掛けることができます。
let j=20*100/30
echo $j
66
または、より高い 10 の倍数で、それが属する小数点以下の桁数を想像してください。
let j=20*10000/30
echo $j
66666
別の明白なオプション:
python -c "print(20 / 30 * 100)"
Python 3 を使用していると仮定します。それ以外の場合は、python3
.