【问题标题】:bash shell script; bc math errorbash 外壳脚本;公元前数学错误
【发布时间】:2017-09-11 18:04:07
【问题描述】:

我是 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)

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

【问题讨论】:

  • 我一直很喜欢波兰符号。 ee=$(dc -e "$aa $bb 2 / - $cc - 2.5 $dd * + p").

标签: bash shell math bc


【解决方案1】:

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)

【讨论】:

    【解决方案2】:

    bc 运算符之间需要空格。

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

    【讨论】:

    • 这通常是不正确的。除了1-(-2)之外,它只需要空格来告诉1--2
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2012-01-31
    • 1970-01-01
    相关资源
    最近更新 更多