标签: bc

如何使用 bc 将浮点值舍入或转换为 int?得到:“(standard_in)1:语法错误”

我会得到像 2743410360.320 这样的值,我想要像 2743410360 这样的值给一个变量。

我试过

INTValueOfGB=$ echo "($gb+0.5)/1" | bc
Run Code Online (Sandbox Code Playgroud)

但我越来越 (standard_in) 1: syntax error

shell-script conversion bc floating-point variable

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

使用 bc 从二进制转换为十六进制的困难

我阅读了如何使用命令行计算器和 HERE 文档进行计算,但是我没有得到我所期望的并且找不到我的错误,我在 shell 中所做的是:

bc << HERE
>ibase=2
>obase=16
>1001
>HERE
100
Run Code Online (Sandbox Code Playgroud)

由于二进制 1001 是十六进制 9,我希望得到 9,但我得到了 100。

command-line bc

5
推荐指数
2
解决办法
3686
查看次数

如何避免在 bc 输出中换行

我在 GNU v. 1.06 中有以下示例(我无法确定与行长度有关的限制):

v=$(bc -l <<<"scale=100;4*a(1)"); echo $v
Run Code Online (Sandbox Code Playgroud)

返回:

3.141592653589793238462643383279502884197169399375105820974944592307\ 
8164062862089986280348253421170676
Run Code Online (Sandbox Code Playgroud)

是否可以删除此函数输出中的反斜杠和回车符,或者我正在寻找不存在的东西?

bc

5
推荐指数
1
解决办法
391
查看次数

如何让 bc 打印尾随零?

我阅读了有关如何让 bc 打印第一个零的主题,但这并不是我想要的。我想要更多...

我想要一个返回带有八位十进制数字的浮点数的函数。我对任何解决方案持开放态度,使用 awk 或任何公平的方法。一个例子将说明我的意思:

hypothenuse () {
        local a=${1}
        local b=${2}
        echo "This is a ${a} and b ${b}"
        local x=`echo "scale=8; $a^2" | bc -l`
        local y=`echo "scale=8; $b^2" | bc -l`
        echo "This is x ${x} and y ${y}"
#       local sum=`awk -v k=$x -v k=$y 'BEGIN {print (k + l)}'`
#       echo "This is sum ${sum}"
        local c=`echo "scale=8; sqrt($a^2 + $b^2)" | bc -l`
        echo "This is c ${c}"
}
Run Code Online (Sandbox Code Playgroud)

有时,a并且b …

awk shell-script arithmetic bc text-formatting

5
推荐指数
2
解决办法
955
查看次数

如何在shell脚本中计算值?

我在终端中运行此命令:

grep "bla bla blah" blah* | echo "Blah: $(wc -l) / $(ls | wc -l) * 100"
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

Blah: 44 / 89 * 100
Run Code Online (Sandbox Code Playgroud)

我期望看到什么:

49.4
Run Code Online (Sandbox Code Playgroud)

有没有办法仅使用 bash 命令来获得所需的输出?我不喜欢我计划通过管道输出的脚本。

bash arithmetic bc

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

如何对 bash 数字数组(有些以科学计数法表示)求和?

由于使用 bc 的以下命令不适用于科学计数法中的数字,因此我想知道是否有替代方案,例如使用 awk?

sum=$( IFS="+"; bc <<< "${arrValues[*]}" )
Run Code Online (Sandbox Code Playgroud)

bash array awk bc math

4
推荐指数
1
解决办法
7393
查看次数

计算表达式并四舍五入到三位小数

我有一个表达式,"5+50*3/20 + (19*2)/7"我需要将它四舍五入到小数点后 3 位。答案是17.92857142857143。当我使用下面的脚本时,它给了我17.928. 答案应该是17.929

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

还有一个问题是如何使用printf来完成相同的任务

bash shell-script arithmetic bc floating-point

4
推荐指数
1
解决办法
6770
查看次数

bc比例:如何避免四舍五入?(计算小二项式概率)

以下代码计算 n 次试验中 k 次成功事件的二项式概率:

n=144
prob=$(echo "0.0139" | bc)

echo -e "Enter no.:" 
read passedno

k=$passedno
nCk2() {
    num=1
    den=1
    for((i = 1; i <= $2; ++i)); do
        ((num *= $1 + 1 - i)) && ((den *= i))
    done
    echo $((num / den))
}

binomcoef=$(nCk2 $n $k)

binprobab=$(echo "scale=8; $binomcoef*($prob^$k)*((1-$prob)^($n-$k))" | bc)

echo $binprobab
Run Code Online (Sandbox Code Playgroud)

当 $passedno (=k) 输入“5”时,结果显示为 0(而不是“0.03566482”),而输入“4”时,结果显示为“.07261898”。

如何以 8 位十进制数字的给定精度打印输出,而不获取输出的四舍五入值?

bc calculator numeric-data

4
推荐指数
1
解决办法
6597
查看次数

bc 的浮点运算不精确?

当我使用 bc 在 shell 中执行浮点运算时,如果我使用常规计算器,结果就不一样了。难道我做错了什么?

例如,我需要找到一个球体的体积。用户输入半径值。

pi = 3.14

volume=$(echo "scale = 2; (4 / 3) * $pi * ($r ^ 3)" | bc)
echo "Volume is $volume"
Run Code Online (Sandbox Code Playgroud)

如果radius = 3,unix 返回112.59,计算器返回113.1。

shell bc floating-point

4
推荐指数
1
解决办法
1145
查看次数

bash - 对变量中的数字求和

我有一个变量集,其中的数字用空格分隔,其中第一个数字也可以由空格引导,例如:

VAR=" 2 1  34 3    2 "
Run Code Online (Sandbox Code Playgroud)

我需要将所有这些数字相加。最简单的方法是将数字之间的所有空格替换为+bc 上的管道

我可以用 for 循环、粘贴和 bc 来完成,但也许有人知道更简单的方法?也许直接在 bash 中VAR使用 bash 内置字符串替换进行一些计算?

$ for i in $VAR;do echo $i;done|paste -sd+|bc
42
Run Code Online (Sandbox Code Playgroud)

更新:感谢所有建议,我终于找到了带有数组的相当短的方法:

$ VAR=" 2 1  34 3    2 "
$ arr=( $VAR );echo "$((${arr[@]/%/+}0))"
42
$ VAR="$VAR -14"
$ arr=( $VAR );echo "$((${arr[@]/%/+}0))"
28
$
Run Code Online (Sandbox Code Playgroud)

bash arithmetic bc variable

4
推荐指数
1
解决办法
6804
查看次数