bc 支持浮点运算吗?

bc 支持浮点运算吗?

看来 bc 不支持浮点运算。当我echo 1/8 | bc这样做时,它会给我零分。我查了手册页bc (1),但它甚至没有提到float,所以我想知道它是否支持?

答案1

bc不处理浮点数,但它处理固定精度的十进制数。 Hauke 提到的标志-l加载了一个数学库,例如。三角函数,但这也意味着

[...]默认值规模是 20

scale是手册页中提到的许多“特殊变量”之一。您可以设置它:

scale=4

任何时候你想要的时候(无论-l是否使用过)。它指的是小数中使用的有效位数。换句话说,后续的解决方案将被四舍五入向下到小数位数后的位数(==固定精度)。

默认比例 sans-l为 0,表示四舍五入(向下)为整数。

答案2

手册页说:

如果使用 -l 选项调用 bc,则会预加载数学库 [...]

确实可以提高它的可理解性......

答案3

  1. 中的数字bc有一个规模。数字的比例不应与比例因子混淆。相同的世界scale用作查询数字比例的函数或作为设置比例因子的参数。

    echo "scale=scale(1.1);11/10" | bc will return 1.1
    
  2. 比例因子(scale变量/寄存器的值)决定进行运算时小数点右侧保留多少位。如果s是当前比例因子,sa是第一个操作数的比例asb是第二个操作数的比例b,结果将被截断如下:

        scale of result
    a+b     max(sa,sb)
    a-b     max(sa,sb)
    a*b     min(sa+sb , max(s,sa,sb))
    a/b     s
    a%b     so that a = b*quotient + remainder; remainder has sign of a
    a^b     min(sa×|b|, max(s,sa)); b must be integer
    sqrt(a) max(s,as)
    
  3. 最初,bcdc.现在,在许多系统上,bc它是一个独立的程序。

也可以看看的 POSIX 规范bc

答案4

MacOS(简称)上的替代路径是使用-e选项与-l选项。

  -e  expr  --expression=expr

      Run "expr" and quit. If multiple expressions or files (see below) are
      given, they are all run before executing from stdin.

例子:bc -e 1/8 -l

相关内容