簡體   English   中英

用bash計算功率

[英]Calculating the power in bash

我很擅長bash腳本。 我正在嘗試計算出來,而我特別想要做的是編寫一個允許我輸入參數的腳本,並且我的腳本計算出該參數的2的冪。

所以說我會嘗試

bash scriptname 3

我的腳本會計算2^3=8

我正在嘗試

(( 2 ^ $1 ))

但那沒有做任何事情。 是否有命令來計算我不知道的東西的力量?

bash中的冪運算符是**

例:

echo $((2 ** 4))
16

值得指出的是,當結果開始超過LONG_MAX時,您會觀察到溢出:

$ echo $((2**62))
4611686018427387904
$ echo $((2**63 - 1))
9223372036854775807
$ echo $((2**63))
-9223372036854775808

(當值超過2 63 -1時觀察結果)

您可能希望使用允許任意精度算術的東西,因為如果計算能力可能會相當快地達到該限制。 例如,你可以使用bc (它也允許你使用^ !):

$ bc <<< 2^63
9223372036854775808
$ bc <<< 2^128
340282366920938463463374607431768211456
$ BC_LINE_LENGTH=0 bc <<< 2^1024
179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216

只是為了好玩,你也可以使用按位移位(當然這只適用於功率為2的基數):

echo $((1<<$1))

請務必閱讀devnull關於溢出的警告。

其他答案完全正確,如果使用整數值表示執行此類計算的最佳方法。 但值得注意的是, 算法不處理非整數值。

如果您需要這樣的非整數運算,則可以使用bc實用程序。 例如,如果您需要獲得2.5的3次冪,您可以這樣做:

$ bc <<< "scale=10; 2.5 ^ 3"
15.625
$ 

注意設置scale builtin變量設置應該給出的小數位數計算。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM