标签: bc

是否有命令行计算器`bc`的`rc`文件?

根据这个问题的答案,我希望scale = 2每次bc从命令行(或从内部vim)开始默认.但是,man bc没有提到.bcrc文件,当我通过实验创建时~/.bcrc,它没有任何明显的效果.

是否有环境变量或rc文件可以设置为提供默认选项bc

bash command-line bc

13
推荐指数
1
解决办法
1483
查看次数

Bash Scripting和bc

我正在尝试编写一个bash脚本,我需要做一些浮点数学运算.基本上我想做这样的事情:

NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
fi
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是$?倾向于保持echo程序的输出而不是bc调用.有没有办法将bc程序的输出保存到变量中?

编辑:

感谢您的快速回复.这是另一种看待问题的方法.说我稍微修改了脚本,所以它看起来像这样:

#!/bin/bash
NUM=$(echo "scale=25;$1/10" | bc)
if [ $? -ne 0 ]
then
echo bad
exit
fi
echo "$NUM"
Run Code Online (Sandbox Code Playgroud)

当用户输入正常的浮点值时,它可以正常工作:

bash script.sh 1.0
Run Code Online (Sandbox Code Playgroud)

输出:

.1000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

但是,当用户输入的值不正确时,脚本无法恢复:

bash script.sh 1.0a
Run Code Online (Sandbox Code Playgroud)

输出:

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

我想要做的就是让它优雅地退出.

bash scripting sh bc

11
推荐指数
1
解决办法
6万
查看次数

Bash decimal to base 62 conversion

我想反转以下bash命令执行的操作:

$ echo $((62#a39qrT))
9207903953
Run Code Online (Sandbox Code Playgroud)

即将十进制9207903953转换为基数62,保持bash标准{0..9},{a..z},{A..Z}.

我知道我可以通过使用来实现这一点bc,但我必须手动转换每个字符.例如,我目前这样做:

BASE62=($(echo {0..9} {a..z} {A..Z}))
for i in $(echo "obase=62; 9207903953" | bc)
do
    echo -n ${BASE62[$i]} #Doesn't work if bc's output contains leading zeroes
done
Run Code Online (Sandbox Code Playgroud)

必须有一种方法以较少"黑客"的方式做到这一点.你知道如何更有效地做到这一点吗?

编辑:更改bc输入.

bash shell base-conversion bc

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

使用分数指数与bc

bc,一个linux命令行计算器,非常精通计算

3^2
9
Run Code Online (Sandbox Code Playgroud)

即使是负指数也不会混淆它:

3^-2
0.11111
Run Code Online (Sandbox Code Playgroud)

然而当它在它出现时失败了

9^0.5
Runtime warning (func=(main), adr=8): non-zero scale in exponent
Run Code Online (Sandbox Code Playgroud)

怎么可能是bc无法处理这个?

错误信息是什么意思?


是的,我已经阅读了 http://www.linuxquestions.org/questions/programming-9/bc-and-exponents-containing-decimals-and-fractions-755260/ 和解决方案

e(0.5*l(9))
2.99999999999999999998
Run Code Online (Sandbox Code Playgroud)

在那里.

是的,由于精确度的损失,它并不好

计算器应该解决表达式.你不应该让计算器的生活更轻松,它应该是另一种方式......


功能旨在鼓励用户编写自己的功能.使其成为一个独特的计算器,需要用户定义的函数来计算平方根.

它并没有真正困扰我写的切线或余切值的功能,因为它看起来非常简单给出s(x)c(x).但在我看来,通过用户定义的函数计算平方根有点太多了.

为什么有人使用bc,如果那里有python?速度?

exponent sqrt bc

10
推荐指数
2
解决办法
6564
查看次数

bash中的十六进制到二进制转换

我正在尝试使用bash将一系列字节从十六进制转换为二进制.但我一直得到(看似随机)"(standard_in)1:语法错误"回复以下代码:

for j in c4 97 91 8c 85 87 c4 90 8c 8d 9a 83 81
do
        BIN=$(echo "obase=2; ibase=16; $j" | bc )
        echo $BIN
done
Run Code Online (Sandbox Code Playgroud)

我做了一个与dec to bin类似的东西,它完美地工作:

for i in {0..120}
do
        KEYBIN=$(echo "obase=2; ibase=10; $i" | bc)
        echo $KEYBIN
done
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么它适用于十进制,但不是十六进制?在我看来,语法几乎相同(除非我遗漏了一些非常难的东西.)

binary bash hex bc

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

在Bash中使用bc舍入数字

我想计算一个带有3位小数的平均值,四舍五入到最近,使用bc.

例如:

平均值为3,3和5应该产生3.667

平均值为3,3和4应该产生3.333

我试过了:

echo "scale=3; $sum/$n+0.0005" | bc
Run Code Online (Sandbox Code Playgroud)

scale不像我期望的那样.我该怎么做才能解决我的问题?

linux bash bc

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

DDD - 有界上下文和多个模型?

我正在阅读关于DDD中有界上下文的想法,我开始意识到我并没有清楚地理解模型在实践中的确切含义.(我甚至可能都不确切知道域的含义.)

让我们看看流行的电子商务示例:客户浏览产品,添加到购物车,下订单.订单履行人员发出订单.

是否存在一个具有多个有界上下文的大型电子商务域(产品目录上下文,购物车上下文,订单上下文,实现上下文)?每个有界上下文是否包含一组模型(因此产品目录上下文包含产品模型,产品图像,产品评论)?

我有多远?

domain-driven-design bc

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

管道输出到bc计算器

精简版:

我正在尝试使用管道在c中使用这样的东西:

echo 3+5 | bc
Run Code Online (Sandbox Code Playgroud)

更长的版本:

按照http://beej.us/guide/bgipc/output/html/multipage/pipes.html上有关管道的简单说明,我尝试在该页面上创建类似于上一个示例的内容.确切地说,我尝试使用2个过程在c中创建管道.子进程将其输出发送到父级,父级使用该输出进行计算,使用bc计算器.我基本上在先前链接的页面上复制了这个例子,对代码进行了一些简单的调整,但它没有用.

这是我的代码:

#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>

int main(void)
{
    int pfds[2];
    pipe(pfds);

    if (!fork()) {
        close(1);       /* close normal stdout */
        dup(pfds[1]);   /* make stdout same as pfds[1] */
        close(pfds[0]); /* we don't need this */
        printf("3+3");
        exit(0);
    } else {
        close(0);       /* close normal stdin */
        dup(pfds[0]);   /* make stdin same as pfds[0] */
        close(pfds[1]); /* we don't need this */
        execlp("bc", "bc", NULL); …
Run Code Online (Sandbox Code Playgroud)

c bash pipe bc

7
推荐指数
1
解决办法
5481
查看次数

bc算术错误

我正在尝试解决这个bash脚本,该脚本从用户读取算术表达式并将其回显到输出屏幕,最后向上舍入3个小数位.

样本输入

5+50*3/20 + (19*2)/7
Run Code Online (Sandbox Code Playgroud)

样本输出

17.929
Run Code Online (Sandbox Code Playgroud)

我的代码是

read x
echo "scale = 3; $x" | bc -l
Run Code Online (Sandbox Code Playgroud)

当有输入时

5+50*3/20 + (19*2)/7
Run Code Online (Sandbox Code Playgroud)

**我的输出是**

17.928
Run Code Online (Sandbox Code Playgroud)

机器想要它

17.929
Run Code Online (Sandbox Code Playgroud)

由于这个原因我得到了错误的解决方案.任何的想法 ?

math arithmetic-expressions bc

7
推荐指数
1
解决办法
439
查看次数

bash,bc modulo不能与-l标志一起使用

所以我试图用来bc计算一些对数但我还需要用它来计算某些东西的模数.在制作我的剧本时,我开始bc测试它.

没有任何标志,bc <<< "3%5"当然会返回3.

但是bc -l(加载数学库,所以我可以计算对数)任何a%b返回的计算,0其中ab可以是任何数字但0.

发生了什么?

bash bc

7
推荐指数
3
解决办法
5778
查看次数