bash shell脚本; bc数学错误

时间:2017-09-11 18:04:08

标签: bash shell math bc

我是bash shell脚本的初学者。我使用bc进行浮点型数据计算,但是我得到了以下错误。我试图在线搜索,但无法解决这个问题。我的简化代码和错误如下所示。

aa=1270000000.000000
bb=14000000
cc=-5245200.55453439363590374313
dd=4666666.66666666666666666666
ee=$(echo "$aa-$bb/2-$cc+2.5*$dd" | bc -l)

(standard_in)1:语法错误

奇怪的是,以下代码似乎有效。

aa=1.222
bb=2
cc=3.999
dd=4.222222
ee=$(echo "$aa-$bb/2-$cc+2.5*$dd" | bc -l)

这很奇怪,但我不知道这是怎么发生的。有没有人对此有任何想法?提前谢谢。

2 个答案:

答案 0 :(得分:2)

bc's解析器将相邻的负号视为递减运算符; 3--33 - -33-(-3)不同。您需要相应地将参数调整为echo,以容纳以cc开头的-值。

ee=$(echo "$aa-$bb/2-($cc)+2.5*$dd" | bc -l)

ee=$(echo "$aa - $bb / 2 - $cc + 2.5 * $dd" | bc -l)

答案 1 :(得分:0)

bc需要运营商之间的空间。

aa=1270000000.000000
bb=14000000
cc=-5245200.55453439363590374313
dd=4666666.66666666666666666666
ee=$(echo "$aa - $bb / 2 - $cc + 2.5 * $dd" | bc -l)