在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中的運算都是整數運算。那怎麼把小數點搞出來,...