a=1
b=2result=$(printf "%.2f" `echo "scale=2; $a/$b"|bc`)
echo $result
輸出結果: 0.50
參考:
shell指令碼中浮點數運算
最近寫了個shell指令碼,檢視運算結果時發現,結果值沒有小數點。
怎麼回事?
原來shell中的運算都是整數運算。那怎麼把小數點搞出來,用這個方法:
[root@***]$ echo "scale=2; 10/3" | bc
3.33
這裡scale=2,表示小數點後取2位,如果不加scale,預設為0,不要小數點:
[root@***]$ echo "10/3" | bc
3這裡|bc是為了完成運算的,和expr的意思有點像,如果不加|bc,就是直接列印:
[[email protected] /home/liurong]$ echo "scale=2; 10/3"
scale=2; 10/3
在指令碼裡,可以把上述運算結果放在變數中:
[root@***]$ export c=$(echo "scale=2; 10/3" | bc)
[root@***]$ echo $c
3.33
#!/bin/bash
#方法1
res1=$(printf "%.2f" `echo "scale=2;1/3"|bc`)
res2=$(printf "%.2f" `echo "scale=2;5/3"|bc`)
#方法2
#v=$(echo $big $small | awk '')
v1=$(echo 1 3 | awk '')
v2=$(echo 5 3 | awk '')
#方法3
mem1=`echo "scale=2; a=1/3; if (length(a)==scale(a)) print 0;print a "|bc`
mem2=`echo "scale=2; a=5/3; if (length(a)==scale(a)) print 0;print a "|bc`
echo res1 is $res1
echo res2 is $res2
echo v1 is $v1
echo v2 is $v2
echo mem1 is $mem1
echo mem2 is $mem2
Shell浮點數運算
shell本身不支援浮點數運算,之類的數 算符只能進行整數運算。要想在shell中運算浮點數,只能借助於bc,awk或者perl。如 a 0.1 b 0.2 c echo a b bc l 或者perl e print stdout a b 需要注意的是,如果數學表示式中有負數,則必須確保運算子 與...
浮點數運算
浮點數運算的公式 n m re n代表浮點數 m代表尾數 r代表基數 e代表指數 所謂浮點數就是類似我們高中學的科學計數法 比如 1000 就表示為 1.0 103 那麼浮點型計算就是兩個用科學計數法表示的數之間進行的計算 例如 1.0 102 1.19 103 該如何計算 步驟 1.對階 所謂對階...
浮點數運算
今天學習了浮點數運算 加減乘除 浮點數運算主要包括兩部分 指數運算和尾數運算。在ieee754標準下,指數運算就是階碼的運算,類似於無符號數運算。尾數運算是原碼運算。之前一直很疑惑為什麼前面的教材在介紹原碼運算 加減乘除 所舉的例子都是小數運算。現在猜想那部分內容可能只是為了浮點數運算做鋪墊,這裡才...