如何在Linux控制台中划分?


Answers:


68

在bash shell中,用 $(( ... ))

$ echo $(( 7 / 3 ))
2

虽然我认为您仅限于整数。


10
是的,bash限于整数数学。
mkb

39
echo 5/2 | bc -l

2.50000000000000000000

'bc'中的'-l'选项允许浮动结果


3
凉; 使用时-l,默认情况下会获得20个小数位,并且会加载一个数学库该库定义了其他函数,例如正弦;要明确指定小数位数,请在表达式前加上scale={numPlaces};(too),如@ user1504475的答案所示。换句话说::-l是指定的一种方便的替代方法scale=20;,但是由于加载了库而导致性能损失-但是,对现实世界的影响似乎可以忽略不计。
mklement0

16

更好的方法是使用任意精度计算器“ bc”。

variable=$(echo "OPTIONS; OPERATIONS" | bc)

例如:

my_var=$(echo "scale=5; $temp_var/100 + $temp_var2" | bc)

其中“ scale = 5”是精度。

man bc 

带有几个用法示例。


1
凉; 需要注意的一件事:不将scale默认值设置为整数除法-除非您指定-l,如下面的@raytrace注释,默认情况下,它显然会为您提供20个小数位,而且还会加载具有其他功能的库。
mklement0

11

我仍然更喜欢使用dc,它是一个RPN计算器,因此快速会话以4位精度将67除以18

>dc
4k
67
18/p
3.7222
q
>

显然,还有更多可用信息:man dc


4
一些指针可能会节省一些旅行man:RPN =反向波兰表示法;简而言之:首先输入操作数,然后输入运算符。p需要终止来输出结果。上述计算的非交互式版本为:dc -e '4k 67 18 / p'。注意:不设置精度(带有{numPlaces}k)默认为0,即整数除法。
mklement0 2013年

11

您可以使用awk,这是一种用于数据提取的实用程序/语言

例如对于1.2 / 3.4

>echo 1.2 3.4 | awk '{ print $2/$1 }'
0.352941



2

使用bash将$ a除以$ b的整数除法示例:

echo $((a/b))

2

您可以使用raytrace的答案进行其他操作。您可以使用反引号使用另一个shell调用的标准输出,然后进行一些计算。例如,我想从几个文件中了解前100行的文件大小。原始大小wc -c以字节为单位,我想知道千字节。这是我所做的:

echo `cat * | head -n 100 | wc -c` / 1024 | bc -l



-1

我也有同样的问题。将整数相除很容易,但是十进制数却不那么容易。如果您有两个数字,例如3.14和2.35,然后将数字相除,则代码将为Division = echo 3.14 / 2.35 | bc echo“ $ Division”,引号不同。请勿混淆,它位于键盘上的esc按钮下方。唯一的区别是| bc以及这里的echo代替打印而充当算术运算符。因此,我添加了回显“ $ Division”来打印值。请让我知道这对你有没有用。谢谢。


这里没有显示引号,因此,只需将引号(``)放在=之后和bc之后。
SHIBLI '17

这些不是引号。它们是重音。之所以没有显示它们,是因为StackOverflow使用它们来突出显示some code here仅用尖音符号包装的代码段。
克里斯·夏普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.