2013-05-10 84 views
0

我的腳本在bash腳本添加前導零到浮點數

#!/bin/bash 
echo -n "number 1 :"; 
read number1 
echo -n "number 2 :"; 
read number2  
jlh=$(echo $number1 + $number2 | bc -l | sed 's/^\./0./'); 
    echo "your result : $number1 + $number2 = $jlh " 

如果1號輸入-1,和2號是0.9,爲什麼結果,卻​​。

我想顯示這樣的零。

Your result : -1 + 0.9 = -0.1 

我該怎麼辦呢?

+0

相關:http://stackoverflow.com/questions/2965411/bash-script-specify-bc-output-number-format – kennytm 2013-05-10 12:35:40

回答

1

因爲你現在只考慮的情況下.NNN,但不是-.NNN,這是一個具有負-簽收前:

有了這個它應該工作:

sed -e 's/^\./0./'  -e 's/^-\./-0./' 
      start with .   start with -. 

所有在一起;

jlh=$(echo $number1 + $number2 | bc -l | sed -e 's/^\./0./' -e 's/^-\./-0./'); 
+0

哦,謝謝你,這項工作在我的bash腳本。 非常感謝。 – user2326650 2013-05-10 13:11:40

+0

太棒了!如果問題已經解決,請考慮接受答案。歡呼 – fedorqui 2013-05-10 13:12:55

+0

歡呼。非常感謝 – user2326650 2013-05-10 13:44:39

0

您可以使用printf的bash內置:

read -p "Number 1: " number1 
read -p "Number 2: " number2 
printf -v jlh "%0.5f" $(bc -l < <(echo $number1 + $number2)) 
echo $jlh 

這可能會產生:

Number 1: .9 
Number 2: -1 
-0.10000 

但是,如果你想了解如何使用SED做,你可以取代第三通過:

read -p "Number 1: " number1 
read -p "Number 2: " number2 
jlh=$(bc -l < <(echo $number1 + $number2) | sed -re 's/^(-)?\./\10./') 
echo $jlh 

這可能會產生:

Number 1: .9 
Number 2: -1 
-0.1