我的剧本
#!/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
,为什么结果仅为-.1
。
我想像这样展示零。
Your result : -1 + 0.9 = -0.1
我怎么做?
答案 0 :(得分: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./');
答案 1 :(得分: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