Bash
bash 可以在不使用外部命令的情況下進行浮點運算嗎?
我讀過
bash
可以在不使用外部命令的情況下進行整數運算,例如:echo "$((3 * (2 + 1)))"
不使用外部命令也可以
bash
進行浮點運算嗎?
不。
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
我同時使用
echo
piped 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