20

bc,一个Linux命令行计算器,精通计算

3^2
9

即使是负指数也不会混淆它:

3^-2
0.11111

然而遇到它却失败了

9^0.5
Runtime warning (func=(main), adr=8): non-zero scale in exponent

怎么可能 bc 不能处理这个?

错误信息是什么意思?


是的,我已经阅读了这个以及那里给出的解决方案:

e(0.5*l(9))
2.99999999999999999998

是的,这不好,因为精度损失和

计算器应该解决表达式。你不应该让计算器的生活更轻松,它应该是相反的......


功能旨在鼓励用户编写自己的函数。使其成为一个独特的计算器,需要用户定义的函数来计算平方根。

为切线或余切线编写函数并没有真正打扰我,因为它看起来很简单给定s(x)c(x)。但在我看来,通过用户定义的函数计算平方根有点过分了。

如果那里有 Python,为什么有人使用 bc?速度?

4

2 回答 2

6

在 bc 中,b 必须是 a ^ b 中的整数。但是,您可以像这样将自己的函数添加到 bc:

创建一个文件 ~/.bcrc,向其中添加以下函数:

define pow(a, b) {
    if (scale(b) == 0) {
        return a ^ b;
    }
    return e(b*l(a));
}

然后您可以按如下方式启动 bc:

bc ~/.bcrc -l

所以你可以使用函数 pow 来做这样的计算。

在这里查看更多,您可以为 bc 添加更多功能。

于 2017-08-28T08:40:48.570 回答
4

bc 是“数学扩展”未提供的非常基本且更复杂的功能,必须在语言本身中实现:它拥有您需要做的一切;特别是“权力”是一个常见的例子,即使在wikipedia上也是如此。

但是您可能也有兴趣在SO 上阅读例如这个答案。

于 2013-04-23T09:05:51.630 回答