dc
和bc
计算器有什么区别?
我应该什么时候使用dc
以及什么时候使用bc
?
答案1
dc
是一个非常古老的工具,比bc
.引用维基百科页面:
它是最古老的 Unix 实用程序之一,甚至早于 C 编程语言的发明;与那个时代的其他实用程序一样,它具有一组强大的功能,但语法极其简洁。
语法是反向波兰表示法,这基本上意味着参数(即数字)首先出现,然后是运算符。一个基本的用法示例dc
是:
echo '3 4 * p' | dc
其中p
需要打印计算结果。bc
另一方面,使用更熟悉的中缀表示法,因此使用起来更直观。这是一个bc
用法示例:
echo '3 * 4' | bc
使用哪一个?
bc
由 POSIX 标准化,因此可能是两者中更便携的一个(至少在现代系统上)。如果您正在进行手动计算器工作,那么它绝对是您的选择(除非您有点受虐狂)。dc
虽然仍然有其用途,但在这种情况下,反向波兰表示法会派上用场。想象一下,您有一个程序输出您想要总计的数字流,例如:
23
7
90
74
29
要做到这一点dc
非常简单(至少在现代实现中,每个运算符可以接受两个以上的数字),因为您只需将 a 附加+p
到流中,例如:
{ gen_nums; echo +p } | dc
但bc
它更复杂,因为我们不仅需要放一个+
之间每个数字并确保所有内容都在同一行,但还要确保末尾有换行符:
{ gen_nums | sed '$ !s/$/+/' | tr -d '\n'; echo; } | bc
答案2
答案3
dc
是计算器,而bc
是实际语言。请参阅他们的手册页。
公元前dc 是一款逆波兰桌面计算器,支持无限精度运算。它还允许您定义和调用宏。通常 dc 从标准输入读取;如果给它任何命令参数,它们都是文件名,并且 dc 在从标准输入读取之前读取并执行文件的内容。所有正常输出都是标准输出;所有错误输出都是标准错误。
bc 是一种支持任意精度数字并交互式执行语句的语言。语法与 C 编程语言有一些相似之处。标准数学库可通过命令行选项使用。如果需要,可以在处理任何文件之前定义数学库。 bc 首先按列出的顺序处理命令行上列出的所有文件中的代码。处理完所有文件后, bc 从标准输入读取。所有代码均在读取时执行。 (如果文件包含停止处理器的命令,则 bc 永远不会从标准输入读取。)
这实际上取决于您最终想要在数学上做什么。某些操作无法使用dc
.多年来,除了其他几个命令行计算器工具之外,我还使用过这两种工具。看 ”命令行表达式求解器?” 一些额外的例子。
答案4
以我的拙见并尽可能用简短的话来说,GNU dc 与 GNU bc 有 3 个不同之处:
1)如果不关心bc的数学库,在做初等算术时,尽可能节省击键次数(用Jan Łukasiewicz的话说:无括号符号),更专注于要领,避免分心。
2) 在 Microsoft Windows 7 的命令行中,GNU dc 消耗的内存 (~ 320K) 比 GNU bc (~ 360K) 少。
3) GNU dc 中的控制粒度比 GNU bc 中的控制粒度大,例如,GNU bc 中没有堆栈和寄存器命令。
两者的版本 1.07.1 win32 位于https://embedeo.org/ws/command_line/bc_dc_calculator_windows/