标签: bc

计算变量,并将其输出到另一个变量

我知道的唯一计算器是bc. 我想添加1到一个变量,并输出到另一个变量。

nextnum从文件中的计数字符串中得到了变量:

nextnum=`grep -o stringtocount file.tpl.php | wc -w`
Run Code Online (Sandbox Code Playgroud)

让我们说nextnum价值是1。添加时1,它会变成2. 为了计算,我运行:

rownum=`$nextnum+1 | bc`
Run Code Online (Sandbox Code Playgroud)

但有错误:

1+1: command not found
Run Code Online (Sandbox Code Playgroud)

我只是在计算部分失败了。我试过改变反引号,但仍然无效。我不知道如何计算变量并将其输出到另一个变量。

shell arithmetic bc calculator

13
推荐指数
2
解决办法
8万
查看次数

BC——自动全精度乘法

高,我需要测试我的任意精度计算器,并且bc似乎是一个很好的比较标准,但是,bc确实将每个乘法的结果截断为每个所涉及的操作数的最大比例。

有没有一种快速的方法来关闭它或自动将每个乘法的比例设置为因子的比例总和,以便它不会失去任何精度?

如果您对此有更优雅的解决方案,涉及除 之外的其他内容bc,我将不胜感激您的分享。

例子:

$ bc <<< '1.5 * 1.5'
2.2
Run Code Online (Sandbox Code Playgroud)

真正的答案是 2.25。

bc calculator

12
推荐指数
1
解决办法
2万
查看次数

是否可以保存`bc` 命令行历史记录?

bash有一个方便的文件.bash_history,它保存命令的历史记录,并且在下次执行bash历史记录时填充保存的命令。

是否可以以bc相同的方式将命令历史记录保存到文件中,然后在启动时加载它以便保留 bc 历史记录?

我尝试阅读GNU bc 手册,它提到了readlinelibedit。从ldd /usr/bin/bc我看到我的使用readline,并readline具有write_historyread_history功能。这个功能是在里面实现的bc还是我需要修补的bc

gnu readline bc

12
推荐指数
1
解决办法
565
查看次数

如何在 bc 中的小数点前显示零?

echo "scale=3;1/8" | bc
Run Code Online (Sandbox Code Playgroud)

显示.125在屏幕上。如何显示0.125输出结果是否小于一?

bc

10
推荐指数
1
解决办法
7833
查看次数

如何定义一个`bc` 函数供以后使用?

我总觉得bc有些神秘和耐人寻味。这是一个原来的Unix程序。它本身就是一种编程语言。所以我很乐意抓住任何我能找到的机会来使用它。

由于 bc 似乎不包括阶乘函数,我想定义一个这样的:

define fact(x) {
  if (x>1) {
    return (x * fact(x-1))
  }
  return (1)

}
Run Code Online (Sandbox Code Playgroud)

但是......我不能重复使用它,是吗?

我希望能够做类似的事情

me@home$ bc <<< "1/fact(937)"
Run Code Online (Sandbox Code Playgroud)

shell bc

9
推荐指数
1
解决办法
3075
查看次数

无法使用 bc 对从 stdin 收到的数字求和

我正在尝试使用以下方法计算文件夹中包含的文件的平均熵:

{ echo '('; find . -type f -exec entropy {} \; | \
  grep -Eo '[0-9.]+$' | \
  sed -r 's/$/+/g'; echo '0)/'; 
  find . -type f | wc -l; }  | \
tr -d '\n' | bc -l
Run Code Online (Sandbox Code Playgroud)

entropy 作为计算文件的香农熵的可执行文件,给出以下形式的输出:

$ entropy foo
foo: 5.13232
Run Code Online (Sandbox Code Playgroud)

上述命令出错:

(standard_in) 1: syntax error
Run Code Online (Sandbox Code Playgroud)

但是,生成的输出似乎没有问题:

$ { echo '('; find . -type f -exec entropy {} \; | \
    grep -Eo '[0-9.]+$' | \
    sed -r 's/$/+/g'; echo '0)/'; \
    find . …
Run Code Online (Sandbox Code Playgroud)

shell bash bc

9
推荐指数
2
解决办法
1万
查看次数

Linux bc定义PI为99

我在 Ubuntu Linux 中使用 bc。它有一个预定义的常量 PI,设置为 99。为什么 bc 将 PI 定义为 99 而不是 3.14159...?

bc math

9
推荐指数
3
解决办法
3794
查看次数

如何让 bc 显示 10 而不是 10.00

#!/bin/bash 
q=$(bc <<< "scale=2;$p*100")
head -n$q numbers.txt > secondcoordinate.txt
Run Code Online (Sandbox Code Playgroud)

这只是剧本的一部分,但我认为这足以阐明我的意图。p是一个只有两位小数的变量,所以q应该是一个整数...不过, bc例如,显示10.00而不是10

我该如何解决这个问题?

bc

8
推荐指数
2
解决办法
4449
查看次数

如何评估一个数学方程,文件中的每行一个?

我有一个包含以下内容的文件:

37 * 60 + 55.52
34 * 60 + 51.75
36 * 60 + 2.88
36 * 60 + 14.94
36 * 60 + 18.82
36 * 60 + 8.37
37 * 60 + 48.71
36 * 60 + 34.17
37 * 60 + 42.52
37 * 60 + 51.55
35 * 60 + 34.76
34 * 60 + 18.90
33 * 60 + 49.63
34 * 60 + 37.73
36 * 60 + 4.49
Run Code Online (Sandbox Code Playgroud)

我需要编写一个 shell 命令或 Bash …

scripting bash bc

8
推荐指数
3
解决办法
1686
查看次数

bc:POSIX 是否禁止独立使用关系运算符?

我想将两个数字与bc. 根据StackOverflow 上这个高度评价的答案,我可以这样做:

printf '%s\n' '1.2 > 0.4' | bc
Run Code Online (Sandbox Code Playgroud)

bc发送1到 STDOUT,表明该语句为真(如果该语句为假,它将返回 0)。

根据 POSIX 页面bc

与所有其他运算符不同,关系运算符( '<', '>', "<=", ">=", "==", "!=" )仅作为 if、while、或在 for 语句中。

也许我误解了,但是这种语言似乎不允许使用上面示例中使用的语法。

单独使用关系运算符是否bc违反 POSIX?如果是这样,我应该如何重写我的例子?

posix bc

8
推荐指数
1
解决办法
650
查看次数

标签 统计

bc ×10

shell ×3

bash ×2

calculator ×2

arithmetic ×1

gnu ×1

math ×1

posix ×1

readline ×1

scripting ×1