下面的行不會在我的腳本工作:猛砸計算器
a=$(echo "scale=3;(2*$j/(sqrt(3)*$i))" | bc)
a1=$(echo `expr "scale=3; $a^(1/3)"` | bc -l)
錯誤它給:
Runtime warning (func=(main), adr=21): non-zero scale in exponent
我只想有「A」的立方根的價值。不知何故,我沒有得到它。請給點意見。
下面的行不會在我的腳本工作:猛砸計算器
a=$(echo "scale=3;(2*$j/(sqrt(3)*$i))" | bc)
a1=$(echo `expr "scale=3; $a^(1/3)"` | bc -l)
錯誤它給:
Runtime warning (func=(main), adr=21): non-zero scale in exponent
我只想有「A」的立方根的價值。不知何故,我沒有得到它。請給點意見。
這條線是有問題的:
a1=$(echo `expr "scale=3; $a^(1/3)"` | bc -l)
因爲你不能使用非整數值作爲bc
動力。
實施例重現此錯誤:
bc -l
bc 1.06
sqrt(3)^(1/3)
Runtime warning (func=(main), adr=11): non-zero scale in exponent
1
解決方案:
可以使用該函數來計算立方根:
a1=$(bc -l <<< "scale=3; e(l($i)/3)")
實施例:
i=8; bc -l <<< "scale=3; e(l($i)/3)"
1.999
或者使用awk
由@fedorqui
提到你可能想使用awk
這個,而不是使用複雜的bc
syntaxs:
awk -v num=$bash_variable 'BEGIN{print num^(1/3)}'
例如:
v=3
awk -v num=$v 'BEGIN{print num^(1/3)}'
返回: 1.44225
。
或存儲變量再使用:
var=$(awk -v num=$v 'BEGIN{print num^(1/3)}')
你能做到'的日誌(一)'除以'3'然後'反對數()' – 2014-10-02 09:41:42
@anubhava:非常感謝你,它正在工作。 – 2014-10-02 09:53:20
不客氣,很高興它解決了。 – anubhava 2014-10-02 09:53:54