現在、正しい出力が得られていますが、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として戻ってくることです。
(計算に含まもともと提起として、この答えは質問のために書かれたことに注意してください、v^0.16
でbc
)
ではbc
、^
演算子は整数のべき乗であるため、実際v
には0.16ではなく0の累乗になります。ただし、対数を使用して一般的な指数を計算するx^y
ことはできますe(y*l(x))
。の代わりに、を使用できます。したがって、ここでは、の代わりにv^0.16
、が必要になりe(0.16*l(v))
ます。
これには、標準の数学ライブラリを含めるための-l
スイッチが必要であることに注意してくださいbc
。特定のレベルの精度が必要な場合は、のscale
パラメーターを使用する必要があります。このパラメーターはbc
、-l
スイッチの使用時にデフォルトで20になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加