bc 将数字作为整数处理:
# echo "100/3" | bc
33
Run Code Online (Sandbox Code Playgroud)
bc -l 将数字作为浮点对象处理:
# echo "100/3" | bc -l
33.33333333333333333333
Run Code Online (Sandbox Code Playgroud)
有没有办法限制小数点后的位数?
我想要使用 bash 脚本的快速示例:
#!/bin/bash
echo "Insert the price you want to calculate:"
read float
echo "This is the price without taxes:"
echo "scale=2; $float/1.18" |bc -l
read -p "Press any key to continue..."
bash scriptname.sh
Run Code Online (Sandbox Code Playgroud)
假设价格是:48.86 答案将是:41.406779661(实际上是 41.40 因为我正在使用scale=2;)
我的问题是: 我如何舍入第二个小数以这种方式显示答案?:41.41
我正在编写一个脚本,我想将结果传递给bc一个变量。我已经声明了 2 个变量 ( var1and var2) 并给了它们值。在我的脚本中,我想将结果传递bc到另一个变量 say 中,var3以便我可以var3进行其他计算。到目前为止,我已经能够将结果写入一个不是我正在寻找的文件中,并且我已经能够在终端中回显结果,但我现在只想将结果传递给一个变量,以便我可以使用该变量。
echo "scale=2;$var1/var2" | bc
Run Code Online (Sandbox Code Playgroud) Ubuntu 14.04.1 LTS
如何设置 bc 计算器的默认比例?每次运行 bc 时,我希望 scale=2 为默认值,我想将所有计算限制为 2 个小数位。我在我的主目录中创建了一个文件,.bc并在其中放置scale=2了第一行,然后是回车。
上的权限〜/ .BC是:-rw-rw-rw-。那正确吗?
然后我做到了set BC_ENV_ARGS=~/.bc; export BC_ENV_ARGS。然后我跑bc,做了8.37843*32.190233之类的测试,还是得到了2位小数。
在线手册没有提供任何关于这样做的例子,所以请不要引导我去那里。
谢谢。
编辑:好的,当我做像 78/31 这样的测试时,它给了我 2 位小数。但是当我做上面的测试时,它给了我超过 2 位小数。这是为什么?我总是想只显示 2 位小数。
我刚刚找到了一个很好的命令行计算器程序bc并且对它很满意,直到我发现它对小数值进行四舍五入,从而导致精度损失。
根据其man页面:
所有数字在内部均以十进制表示,所有计算均以十进制完成。(此版本截断了除法和乘法运算的结果。)
您能否为 Ubuntu Maverick推荐一个等效的bc?我需要使用变量进行高级命令行计算。
我bc最近在使用该实用程序,
无法使用Ctrl+C退出程序。Ctrl+C的interrupt信号与use quit to exit.我可以使用EOF( Ctrl+ D) 或quit退出的消息一起返回。
我通读了^Z和之间的区别^C。从技术上讲,^C应该结束程序(并且大多数程序在接收到interrupt信号时都会中止)。但是bc返回一条消息,要求我们quit改用。
我想知道这有什么特别的优势吗?
我喜欢在交互模式下使用 bc 作为计算器。但是,它只接受句点 (.) 作为小数点分隔符,但我使用的是德语键盘布局,因此小键盘上只有逗号 (,)。这在单手使用小键盘上的 bc 时非常不方便,因为输入小数时我必须移动我的手并搜索句号键。
所以我正在寻找一种仅在小键盘上使用 bc 的简单方法。
我现在看到的一些可能性:
如果有任何想法,我将不胜感激。
我正在编辑一个 Conky 主题。我希望它以华氏度而不是摄氏度输出处理器温度。
在~/.conkyrc文件中,该命令sensors | grep 'Core 0' | cut -c18-19用于查找第一个处理器内核的摄氏温度。我想用它bc来计算这个(给它outputvalue*9/5+32)。
问题是,bc只想要绝对值,我看不出有办法传递它的程序输出。如果我尝试使用类似的东西temp=$(sensors | grep 'Core 0' | cut -c18-19) & echo 'temp*9/5+32' | bc,它最终会给我 32,因为它将“temp”注册为 0。
我在做:
echo "scale=2; sqrt( (-9.522 - -9.522)**2 + (-17.145 - -17.145)**2 + (-2.689 - -2.689)**2 )" | bc
Run Code Online (Sandbox Code Playgroud)
我得到:
(standard_in) 1: syntax error
(standard_in) 1: syntax error
(standard_in) 1: syntax error
Run Code Online (Sandbox Code Playgroud)
我不明白发生了什么。
请问,有什么建议吗?