![bc 支持浮点运算吗?](https://linux22.com/image/29364/bc%20%E6%94%AF%E6%8C%81%E6%B5%AE%E7%82%B9%E8%BF%90%E7%AE%97%E5%90%97%EF%BC%9F.png)
看来 bc 不支持浮点运算。当我echo 1/8 | bc
这样做时,它会给我零分。我查了手册页bc (1)
,但它甚至没有提到float
,所以我想知道它是否支持?
答案1
bc
不处理浮点数,但它处理固定精度的十进制数。 Hauke 提到的标志-l
加载了一个数学库,例如。三角函数,但这也意味着
[...]默认值规模是 20
scale
是手册页中提到的许多“特殊变量”之一。您可以设置它:
scale=4
任何时候你想要的时候(无论-l
是否使用过)。它指的是小数中使用的有效位数。换句话说,后续的解决方案将被四舍五入向下到小数位数后的位数(==固定精度)。
默认比例 sans-l
为 0,表示四舍五入(向下)为整数。
答案2
手册页说:
如果使用 -l 选项调用 bc,则会预加载数学库 [...]
确实可以提高它的可理解性......
答案3
中的数字
bc
有一个规模。数字的比例不应与比例因子混淆。相同的世界scale
用作查询数字比例的函数或作为设置比例因子的参数。echo "scale=scale(1.1);11/10" | bc will return 1.1
比例因子(
scale
变量/寄存器的值)决定进行运算时小数点右侧保留多少位。如果s
是当前比例因子,sa
是第一个操作数的比例a
,sb
是第二个操作数的比例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)
最初,
bc
是dc
.现在,在许多系统上,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