我现在得到了正确的输出,但它并没有扩展到仅 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 而不是 1.4454。
答案1
(请注意,这个答案是针对最初提出的问题而写的,其中包括v^0.16
计算bc
)
在 中bc
,^
运算符是整数求幂,所以实际上是求v
0 次方,而不是 0.16。不过,您可以使用对数来计算一般指数:x^y
您可以使用来代替e(y*l(x))
。所以在这里,v^0.16
您需要的不是e(0.16*l(v))
。
请注意,这需要-l
切换以bc
包含标准数学库。如果您想要特定级别的精度,则需要使用 参数scale
,在使用开关bc
时该参数默认为 20 。-l