使用 getopt 和 bc 的 Bash 脚本 Wind Chill

使用 getopt 和 bc 的 Bash 脚本 Wind Chill

我现在得到了正确的输出,但它并没有扩展到仅 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^运算符是整数求幂,所以实际上是求v0 次方,而不是 0.16。不过,您可以使用对数来计算一般指数:x^y您可以使用来代替e(y*l(x))。所以在这里,v^0.16您需要的不是e(0.16*l(v))

请注意,这需要-l切换以bc包含标准数学库。如果您想要特定级别的精度,则需要使用 参数scale,在使用开关bc时该参数默认为 20 。-l

相关内容