Shell Scripting:用实数作为指数计算一个数的幂

Sye*_*oez 3 shell-script bc

我正在使用 shell 脚本并使用以下表达式:

A=`echo "(( (($a / $b) ^ 0.3) -1 ))" |bc -l`
Run Code Online (Sandbox Code Playgroud)

我想要一个实数作为指数。我注意到如果我放置 0.3,它会四舍五入为一个整数并取零的幂。同样,如果我在上面的表达式中使用 5.5 或 5.9 代替 0.3,我会得到相同的答案。

如何计算指数为实数而不是整数的数的幂

Tom*_*itl 7

您不能直接使用^运算符提升到非整数指数,但是,您可以使用身份

a b = e ln(a) × b

e作为自然对数的底。bc,当使用-l选项调用时,具有函数el分别计算e底幂和自然对数,所以为了计算a^b你只需写e(l(a)*b)

例如,对于 2 0.5(2 的平方根):

$ echo 'e(l(2)*0.5)' | bc -l
1.41421356237309504878
Run Code Online (Sandbox Code Playgroud)


小智 5

为什么不能用 awk 或 perl one-liner 来处理呢?

echo "$a $b" | awk '{ print ((($1/$2)^0.3) -1); }'
Run Code Online (Sandbox Code Playgroud)