在bash脚本中将前导零添加到浮点数

时间:2013-05-10 12:32:07

标签: regex bash variables math logic

我的剧本

#!/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

我怎么做?

2 个答案:

答案 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