使用 Gnu 的 bc 进行除法

使用 Gnu 的 bc 进行除法

我刚刚开始使用 Gnu 的 bc,一开始就卡住了(非常令人沮丧……)。我想将两个数字相除并得到一个浮点数作为结果:

$bc
bc 1.06.94
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

15/12
1
15.0/12.0
1
15.000000/12.000000
1
scale(15.00000)
5

手册页说,除法返回一个与初始值具有相同标度的数字。显然,这要么是不正确的,要么是我遗漏了什么。

谷歌搜索并没有带来任何新的见解(除了“BC”也可以代表“不列颠哥伦比亚省”)。

你看到我的错误了吗?更好的是,你知道任何关于 bc 的好的参考/教程吗?

答案1

您可以使用以下方式设置比例

scale=2

然后除法按预期进行:

scale=2
15/12
1.25

引用维基百科:

所有数字和变量内容都是任意精度数,其精度(小数位)由全局变量决定scale

答案2

使用 bc -l,它预加载数学库并将默认比例设置为 20。

$ bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 
4/3
1.33333333333333333333

答案3

要扩展 Colin_Daly,显然BC_ENV_ARGS="-q $HOME/.bcrc"需要scale=INT在 .bcrc 中使用 。环境变量基本上只是卡在bc 命令

实际情况是 -q 只是一个普通的命令行选项,它$HOME/.bcrc被扩展并作为第一个file参数输入到 bc 中(可以有多个文件参数)。scale=INT是一行 bc,它是一种编程语言。它在功能上相当于运行 bc 并scale=INT在 bc 提示符下输入。您必须使用 $HOME 而不是 ~,因为 ~ 只有在没有引用时才会被识别(请参阅这里),但我们需要某种引用,因此变量被设置为两个单词,而不仅仅是空格。

答案4

如果这对任何人有帮助,我试图scale=2默认设置安静模式,但似乎无法做到正确。

如果我设置BC_ENV_VARS="-q",我会得到安静模式,如果我设置BC_ENV_VARS="~/.bcrc",我可以在这个文件中设置scale=2,但我无法打开安静模式(也许有办法,但我找不到它)。

最后我使用了 export BC_ENV_ARGS=~/.bcrc(带有scale=2)并将别名bc改为bc -q

相关内容