2013-05-10 46 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