bc 与 dc 有什么不同?

bc 与 dc 有什么不同?

dcbc计算器有什么区别?

我应该什么时候使用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

两者之间的基本区别是dc使用逆波兰表示法。即使为了产生输出,它也需要明确的命令。

您可以通过以下方式添加两个整数bc

bc <<< "2+4"

它会6自己在一条线上生产。但是,dc您需要说:

dc <<< "2 4 +p"

您还可以使用做很多有趣的事情dc,例如参考我的答案这里用于生产

Hello World!

使用dc

dc<<<"8 9*P101P108P108P111P4 8*P81 6+P111P114P108P100P33P"

答案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/

相关内容