如何在shell中對浮點數進行計算

2021-04-22 19:38:52 字數 1002 閱讀 5517

在shell中具有最基本的數學計算能力,如可以使用expr 、let 。但這些都只能處理整形資料。為了要計算小數,就需要通過bc命令擴充套件。下面演示了乙個例子,判斷輸出的引數型別,然後計算出它的平方.

#!/bin/sh

#filename: testbc

var=$1

dd=$(echo $var|bc 2>/dev/null )

if [ "$var" != "$dd" ] || [ "$var" == "" ]; then

echo "$var isn't number!"

elif echo $var | grep "/." > /dev/null 2>

then

#square=$(echo " $var * $var "|bc)

square=$(echo " $var * $var  "|bc -l)

echo "$var is a float number,square is:$square"

else

square=$(echo "$var * $var" | bc)

echo "$var is a int  number,square is:$square"fi

執行指令碼的結果如下:

$ testbc aaa

aaa isn't number!

$testbc 2

2 is a int  number,square is:4

$testbc 1.5

1.5 is a float number,square is:2.25

如果要處理計算結果的精度,可以使用scale定義精度。可以這樣處理:

$ echo "scale=3; 1.55 * 1.55 " | bc -l

2.402

如果不定義精度,那麼1.55*1.55的值為:2.4025,因為我們定義了精度為3,所以就顯示了小數點後3位.

$ echo "1.55 * 1.55" | bc -l

2.4025

浮點數進行計算

public static void main string args 為什麼會出現這種情況?計算機採用二進位制進行計算,有些資料可以用二進位制表示。如0.5 1 2 2 1 但是有些不行,如0.1,這就好像1 3用十進位制無法準確的表示。計算機採用機器語言來表示數值,即二進位制 名稱意義 原碼正數...

Shell浮點數運算

shell本身不支援浮點數運算,之類的數 算符只能進行整數運算。要想在shell中運算浮點數,只能借助於bc,awk或者perl。如 a 0.1 b 0.2 c echo a b bc l 或者perl e print stdout a b 需要注意的是,如果數學表示式中有負數,則必須確保運算子 與...

shell指令碼中浮點數運算

a 1 b 2result printf 2f echo scale 2 a b bc echo result 輸出結果 0.50參考 shell指令碼中浮點數運算 最近寫了個shell指令碼,檢視運算結果時發現,結果值沒有小數點。怎麼回事?原來shell中的運算都是整數運算。那怎麼把小數點搞出來,...