有没有其他命令行计算器支持log
,n!
计算?至少bc
不能这样做,它产生了解析错误。
最好我可以在脚本中使用它,例如echo '5!' | program
.
答案1
bc
如果使用标志调用,则支持自然对数-l
。您可以用它计算以 10 为底或以 2 为底的对数:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
我不认为有内置的阶乘,但是你自己编写就很容易:
$ bc
...
define fact_rec (n) {
if (n < 0) {
print "oops";
halt;
}
if (n < 2) return 1;
return n*fact_rec(n-1);
}
fact_rec(5)
120
或者:
define fact_it (n) {
if (n < 0) {
print "oops";
halt;
}
res = 1;
for (; n > 1; n--) {
res *= n;
}
return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000
为了兼容 POSIX,你需要这样写:
define f(n) {
auto s, m
if (n <= 0) {
"Invalid input: "
n
return(-1)
}
s = scale
scale = 0
m = n / 1
scale = s
if (n != m) {
"Invalid input: "
n
return(-1)
}
if (n < 2) return(1)
return(n * f(n - 1))
}
即:单字符函数名,no print
, no halt
, 中需要括号return(x)
。如果您不需要输入验证(此处为正整数),则只需:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
答案2
奥皮是这计算器和命令行极客联合集的计算器。它模拟了经典的 HP RPN 计算器,这当然是唯一真正的计算方法。我们都知道。
如果你是一个计算器异端,从小就使用 TI、Casios 等产品,那么这里有许多 RPN 教程在线您可以开始接受再教育。奥皮手册一旦你掌握了 RPN 的思考方式,最终会对你有所帮助。
计算 5!在 Orpie 中,只需按您的书写方式键入:5 !。您可以Enter在它们之间按一下以5
先压入堆栈,但这不是必需的。
要计算 log 10 (5),请输入5 Enter ' l o Enter。在这种情况下,您必须先将 推5
入堆栈,因为下一个击键不是运算符。该单引号字符进入命令缩写模式,您可以开始键入log10
,您可以仅使用前两个字符来唯一标识它。 (相反l
,单独获得自然对数函数ln
。)
与任何 RPN 计算器一样,您可以得到真的与 Orpie 一起快速练习,并进行一些练习。
Orpie 位于 Ubuntu 库存存储库中。 FreeBSD 将其包含在 Ports 中,作为math/orpie
.在 macOS 上,您可以通过以下方式安装它自制。第三方软件包可能适用于其他操作系统。从源代码构建可能有点麻烦,因为它是用奥卡米尔,并且您可能没有安装 OCaml 开发环境。不过,设置一套并不是特别困难。
答案3
答案4
完全是矫枉过正,但编程语言解释器毕竟是命令行计算器:
$ echo 5 | python -c 'import sys; import math; print math.factorial(int(sys.stdin.readline()));'
120