簡體   English   中英

bc -l在bash中的浮點數的加法/減法/乘法

[英]Addition/subtraktion/multiplikation of floats in bash with bc -l

如此簡單的任務讓我有些麻煩...

請在下面找到相關代碼:

loewdin_fuk=$(echo  $line_fukui|awk '{print $4}')

nbo_fuk=$(echo  $line_fukui|awk '{print $5}') 

echo "loewdin_fuk $loewdin_fuk nbo_fuk $nbo_fuk"

aver_fuk=$(($loewdin_fuk + $nbo_fuk))

\#aver_fuk=$(echo "scale=4; 0.5*($loewdin_fuk $nbo_fuk)" | bc -l)

輸出為:

loewdin_fuk +0.1662 nbo_fuk +0.1865

./collectFukui.sh: line 151: +0.1662 + +0.1865: syntax error: invalid 

arithmetic operator (error token is ".1662 + +0.1865")

使用命令行:

aver_fuk=$(echo "scale=4; 0.5*($loewdin_fuk $nbo_fuk)" | bc -l) 

導致以下輸出:

loewdin_fuk +0.1662 nbo_fuk +0.1865

(standard_in) 1: syntax error

我不明白怎么了...謝謝你!

最好,

這里的問題是, bc不認為+是一元運算符。 因此+0.1662 +0.1865是無效的語法。 (如果第一個數字為負數,則可以正常工作,因為-是一元運算符。)

因此,如果要使用bc ,則需要執行以下操作:

aver_fuk=$(echo "scale=4; 0.5*(0$loewdin_fuk $nbo_fuk)" | bc -l)

無論$loewdin_fuk是否以符號字符開頭,都可以在前面加0且不帶空格。 如果在兩者之間放置一個空格,它將使用帶有顯式符號字符的值,但對沒有符號的值將失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM