user267288 Asked: 2017-12-24 12:11:54 +0800 CST2017-12-24 12:11:54 +0800 CST 2017-12-24 12:11:54 +0800 CST bash 可以在不使用外部命令的情况下进行浮点运算吗?[复制] 772 我读过bash可以在不使用外部命令的情况下进行整数运算,例如: echo "$((3 * (2 + 1)))" 不使用外部命令也可以bash进行浮点运算吗? bash arithmetic 2 个回答 Voted Best Answer jesse_b 2017-12-24T12:18:42+08:002017-12-24T12:18:42+08:00 不。 Bash 本身无法执行浮点运算。 这不是您要寻找的,但可能对其他人有所帮助: 备择方案 bc bc允许浮点运算,甚至可以通过设置值将整数转换为浮点数scale。(请注意,该scale值仅影响除法,bc但解决方法是结束任何除以 1 的公式) $ echo '10.1 / 1.1' | bc -l 9.18181818181818181818 $ echo '55 * 0.111111' | bc -l 6.111105 $ echo 'scale=4; 1 + 1' | bc -l 2 $ echo 'scale=4; 1 + 1 / 1' | bc -l 2.0000 awk awk它本身就是一种编程语言,但很容易被用来在 bash 脚本中执行浮点运算,但这还不是它所能做的全部! echo | awk '{print 10.1 / 1.1}' 9.18182 $ awk 'BEGIN{print 55 * 0.111111}' 6.11111 $ echo | awk '{print log(100)}' 4.60517 $ awk 'BEGIN{print sqrt(100)}' 10 我同时使用echopiped toawk和 aBEGIN来展示两种方法。语句中的任何内容awk BEGIN都将在读取输入之前执行,但是没有输入或 BEGIN 语句awk将不会执行,因此您需要为其提供输入。 Perl 另一种可以在 bash 脚本中使用的编程语言。 $ perl -l -e 'print 10.1 / 1.1' 9.18181818181818 $ somevar="$(perl -e 'print 55 * 0.111111')"; echo "$somevar" 6.111105 Python 另一种可以在 bash 脚本中使用的编程语言。 $ python -c 'print 10.1 / 1.1' 9.18181818182 $ somevar="$(python -c 'print 55 * 0.111111')"; echo "$somevar" 6.111105 Ruby 另一种可以在 bash 脚本中使用的编程语言。 $ ruby -l -e 'print 10.1 / 1.1' 9.18181818181818 $ somevar="$(ruby -e 'print 55 * 0.111111')"; echo "$somevar" 6.111105 mrflash818 2017-12-24T12:32:58+08:002017-12-24T12:32:58+08:00 “bash 也可以在不使用外部命令的情况下进行浮点运算吗?” 没有。 robert@pip2:/tmp$ echo $((2.5 * 3)) bash: 2.5 * 3: syntax error: invalid arithmetic operator (error token is ".5 * 3")
不。
Bash 本身无法执行浮点运算。
这不是您要寻找的,但可能对其他人有所帮助:
备择方案
bc
bc
允许浮点运算,甚至可以通过设置值将整数转换为浮点数scale
。(请注意,该scale
值仅影响除法,bc
但解决方法是结束任何除以 1 的公式)awk
awk
它本身就是一种编程语言,但很容易被用来在 bash 脚本中执行浮点运算,但这还不是它所能做的全部!我同时使用
echo
piped toawk
和 aBEGIN
来展示两种方法。语句中的任何内容awk
BEGIN
都将在读取输入之前执行,但是没有输入或 BEGIN 语句awk
将不会执行,因此您需要为其提供输入。Perl
另一种可以在 bash 脚本中使用的编程语言。
Python
另一种可以在 bash 脚本中使用的编程语言。
Ruby
另一种可以在 bash 脚本中使用的编程语言。
“bash 也可以在不使用外部命令的情况下进行浮点运算吗?”
没有。