これで正しい出力が得られましたが、3つの場所にしか拡張されません。これを行う方法を知っている人はいますか?
function windchill {
to=32
v=10
vel=`echo 'e(l('$v')*0.16)' | bc -l`
w=$(echo "scale=3; $vel" | bc -l)
twc=`echo "35.74 + (0.6215 * $to) - (35.75 * $w) + (0.4275 * $to * $w)" | bc`
echo ''
echo 'Windchill Calculator'
echo 'Outside Air Temperature (F): '"$to"
echo 'Wind Speed: '"$v"
echo 'Wind-Chill (F): '"$twc"
echo ''
exit
}
私は$ tfと$ vを合わせましたが、$ wcは私の問題でした。電卓を使用してbashファイルにはありませんが、正解を得ました。問題は、私の$wが1.4454の代わりに1を返すことです。
答え1
(この回答は元の質問に答えて書かれており、計算が含まれていますv^0.16
。bc
)
のbc
オペレーター^
整数指数化なので実際にはv
0.16 ではなく 0 の累乗になります。ただし、ログを使用して一般指数を計算できます。x^y
代わりに使用できますe(y*l(x))
。だからここでv^0.16
必要なのはe(0.16*l(v))
。
これを行うには、標準の数学ライブラリを含めるように-l
切り替える必要があります。特定のレベルの精度が必要な場合は、スイッチを使用するときにデフォルト値が20のパラメータを使用する必要bc
があります。scale
bc
-l