将两个数字与bc(bash)比较时结果错误


1

我遇到了一个错误,可能是中的错误bc。我尝试在bash中的脚本上比较两个数字时遇到了它。事实证明,当我这样做时:

echo "1.1E-2<1.1E-1" | bc -l

它返回1(按预期方式)。

但是当我这样做时,例如:

echo "2.1E-2<1.1E-1" | bc -l

当它应返回1时将返回0(因为0.021小于0.11)。

我正在使用bub版本1.06.95和kubuntu 14.04

有没有人找到类似的结果?谁能想到解决方法?

Answers:


3

bc 不了解指数表示法。

它可能将“ E”解释为一个十六进制数字,但是在较长的数字中,它似乎会将其转换为9(错误?),对于其他十六进制数字也是如此:

bc -l <<< E-4    # 14 - 4
10

bc -l <<< 1E-1   # 19 - 1
18

bc -l <<< F.4E2
9.492

1

您的解决方法

    echo "2.1*10^-2<1.1*10^-1" | bc -l

如果您要转换另一个文件的输出,则可以执行以下操作

    echo "2.1E-2<1.1E-1" | sed 's/E/*10^/g'  | bc -l 

其中,与sed你去代替E*10^由接受bc

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.