亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Linux Shell > 正文

Linux下科學計數法(e)轉化為數字的方法

2020-07-26 23:24:58
字體:
來源:轉載
供稿:網友

科學計數法使用e標識數值,將科學計算學轉化為數字的思路:按e右邊的數字移動小數點位數。e右邊的數字如果是負數,則向左移動小數點。示例如下:

1.2345678e2 = 123.456781.2345678e-2 = 0.0123456781.7615562e+06 = 1761556.21.87982e7 = 187982001e3 = 1000

那么在shell中,如何轉化科學計數法為數字呢,方法如下:這里以"1.7615562e+06" (或者1.7615562e6)為示例:

[root@kevin ~]# echo "1.7615562e6"| gawk '$1=strtonum($1)'1.76156e+06

1)科學計數法轉為十進制

[root@kevin ~]# printf "%f" 1.7615569e+061761556.900000 [root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}' 1761556.900000 [root@kevin ~]# echo "1.7615569e+03"| awk '{printf("%f",$0)}'1761.556900 [root@kevin ~]# echo "1.7615569e+04"| awk '{printf("%f",$0)}'17615.569000 [root@kevin ~]# echo "1.7615569e-6"| awk '{printf("%f",$0)}'0.000002 [root@kevin ~]# echo "1.7615569e-4"| awk '{printf("%f",$0)}'0.000176 [root@kevin ~]# echo "1.7615569e-3"| awk '{printf("%f",$0)}'0.001762 [root@kevin ~]# echo "1.7615569e-2"| awk '{printf("%f",$0)}'0.017616

需要注意: 這種方法,轉化結果中小數點后面都保留6位:
1)e后面的數字若是正數,則小數點后面要保留6位,不夠的話,用0補上。
2)e后面的數字若是負數,則小數點后面要保留6位,多的話,此時按照四舍五入,保留6位。

2)科學計數法轉為十進制并保留兩位小數

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%.2f",$0)}'  1761556.90

保留三位小數

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%.3f",$0)}'  1761556.900

3)科學計數法轉為十進制并取整

[root@kevin ~]# echo "1.7615569e+06"|awk '{printf("%d",$0)}' 1761556 [root@kevin ~]# echo "1.7615569e3"|awk '{printf("%d",$0)}'  1761 [root@kevin ~]# echo "1.7615569e02"|awk '{printf("%d",$0)}' 176

4)科學計數法轉十進制并四舍五入取整

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%d",$0+0.5)}' 1761557 [root@kevin ~]# echo "1.7615563e+06"| awk '{printf("%d",$0+0.5)}' 1761556

5)如何將小數點后無用的0去掉, 可以參考: 日常運維的Shell腳本中截取字符串的做法,即用變量擴展的方式

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}'1761556.900000 [root@kevin ~]# var=$(echo "1.7615569e+06"| awk '{printf("%f",$0)}')[root@kevin ~]# echo ${var%%0*}1761556.9

或者使用sed方法也可以

[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}'   1761556.900000 [root@kevin ~]# var=$(echo "1.7615569e+06"| awk '{printf("%f",$0)}')[root@kevin ~]# echo "$var"|sed 's/0*$//'1761556.9 [root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%f",$0)}'| sed 's/0*$//'1761556.9

6)sed去除掉小數點之后的字符

[root@kevin ~]# echo "kevin.123"|sed "s//.*//g"kevin123 /..*代表了小數點之后的1到多個[root@kevin ~]# echo "kevin.123"|sed "s//..*//g"kevin  [root@kevin ~]# echo "kevin_123"|sed "s//_*//g"kevin123 [root@kevin ~]# echo "kevin_123"|sed "s//_.*//g"kevin

命令解釋:
*代表0到多個。故/.*只能替換掉小數點變成空。/_*同理。
.*代表1到多個。故/..*將小數點后的全部去掉了。/_.*同理。

7)shell中的數字計算說明

 1)bc方法bc是比較常用的linux計算工具了,而且支持浮點運算:[root@kevin ~]# a=`echo 1+1 | bc`[root@kevin ~]# echo $a2 這種方法沒法解決浮點數運算的精度問題,如下幾種浮點數計算情況就傻X了![root@kevin ~]# a=`echo 1+1 | bc`[root@kevin ~]# echo $a2[root@kevin ~]# b=`echo "1.2*1.2" | bc`[root@kevin ~]# echo $b1.4[root@kevin ~]# c=`echo "5.0/3.0" | bc`[root@kevin ~]# echo $c1[root@kevin ~]# d=`echo "scale=2;5.0/3.0" | bc`[root@kevin ~]# echo $d1.66[root@kevin ~]# e=`echo "scale=2;5.0/6.0" | bc`[root@kevin ~]# echo $e.83 2)expr方法不支持浮點數計算,這是個坑,而且要注意數字與運算符中的空格。[root@kevin ~]# a=`expr 1+1`[root@kevin ~]# echo $a1+1[root@kevin ~]# a=`expr 1 + 1`[root@kevin ~]# echo $a2[root@kevin ~]# b=`expr 10 / 2`[root@kevin ~]# echo $b5 3)$(())方法同expr,不支持浮點數運算[root@kevin ~]# a=$((1+1))[root@kevin ~]# echo $a2[root@kevin ~]# b=$((1 + 3 ))[root@kevin ~]# echo $b4 4)let方法不支持浮點數運算,而且不支持直接輸出,只能賦值[root@kevin ~]# let a=1+1[root@kevin ~]# echo $a2[root@kevin ~]# let b=50/5[root@kevin ~]# echo $b10[root@kevin ~]# let c=1.2*2-bash: let: c=1.2*2: syntax error: invalid arithmetic operator (error token is ".2*2") 5)awk方法普通的運算:[root@kevin ~]# a=`echo | awk '{print 1.0/2.0}'`[root@kevin ~]# echo $a0.5 控制精度:[root@kevin ~]# b=`echo | awk '{printf("%.2f",1.0/2.0)}'`[root@kevin ~]# echo $b0.50 傳遞參數:[root@kevin ~]# c=`echo | awk -v a=1 -v b=3 '{printf("%.4f",a/b)}'`[root@kevin ~]# echo $c0.3333 awk結合BEGIN(小數點后面保留6位)[root@ss-server ~]# awk 'BEGIN{printf "%.2f%%/n",(87/500)*100}'17.40%[root@ss-server ~]# awk 'BEGIN{printf "%.2f%%/n",(100/300)*100}'33.33%

綜合來看,還是awk的方法最靠譜,其他的方式都有相應問題。所以推薦在日常維護場景下使用awk來搞數學計算。

到此這篇關于Linux下科學計數法(e)轉化為數字的方法 的文章就介紹到這了,更多相關Linux e轉化為數字內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲乱码国产乱码精品精天堂| 日韩成人中文电影| 中文字幕av一区二区三区谷原希美| 亚洲视频在线观看免费| 日本国产一区二区三区| 国产视频久久久久| 日本一区二三区好的精华液| 亚洲国产日韩欧美在线动漫| 成人国产亚洲精品a区天堂华泰| 中文字幕亚洲综合| 亚洲va欧美va国产综合久久| 日韩在线观看高清| 中文字幕亚洲自拍| 国产又爽又黄的激情精品视频| 国产视频一区在线| 亚洲最新视频在线| 欧美午夜丰满在线18影院| 欧美性xxxxxxxxx| 欧美激情国内偷拍| 国外日韩电影在线观看| 中文字幕亚洲综合久久筱田步美| 狠狠躁18三区二区一区| 91高清在线免费观看| 97超级碰在线看视频免费在线看| 久久久亚洲福利精品午夜| 欧美高跟鞋交xxxxxhd| 亚洲小视频在线观看| 一区二区三区在线播放欧美| 精品国产一区二区三区久久久狼| 国产成人小视频在线观看| 欧美日本在线视频中文字字幕| 日本久久久久亚洲中字幕| 九九久久久久久久久激情| 伊人激情综合网| 国产精品久久久久久久午夜| 91av网站在线播放| 欧美激情在线有限公司| 国产精品爽黄69| 成人激情在线观看| 日韩**中文字幕毛片| 亚洲精品国精品久久99热一| 日韩久久免费视频| 国产成人综合av| 精品激情国产视频| 亚洲午夜久久久久久久| 亚洲欧美激情精品一区二区| 欧美一级bbbbb性bbbb喷潮片| 欧美大全免费观看电视剧大泉洋| 在线观看不卡av| 欧洲永久精品大片ww免费漫画| 91亚洲精品一区| 91av网站在线播放| 亚洲国产精品热久久| 一二美女精品欧洲| 久久久久亚洲精品成人网小说| 91视频国产一区| 26uuu国产精品视频| 国产精品美乳一区二区免费| 亚洲一区二区三区成人在线视频精品| 亚洲综合国产精品| 亚洲日本欧美中文幕| 亚洲资源在线看| 97色在线观看| 国产免费一区视频观看免费| 国产午夜精品全部视频播放| 91夜夜未满十八勿入爽爽影院| 久久久久久国产精品美女| 国产精品一区二区三| 中文字幕在线成人| 欧美成人在线免费视频| 欧美福利小视频| 在线亚洲欧美视频| 青青草99啪国产免费| 国产精品白丝jk喷水视频一区| 成人黄色午夜影院| 九九热精品视频国产| 国产精品一区久久久| 欧美日韩第一视频| 97在线看免费观看视频在线观看| 中文字幕av一区二区| 精品伊人久久97| 高清欧美性猛交xxxx黑人猛交| 国产精品扒开腿做爽爽爽的视频| 国产亚洲精品91在线| 亚洲国产精品小视频| 操人视频在线观看欧美| 欧美激情精品久久久久久黑人| 国产精品一区二区三区免费视频| 久久久视频精品| 日韩女优在线播放| 国产精品一区二区久久国产| 国产一区二区精品丝袜| 日韩中文在线不卡| 久久影视电视剧免费网站| 欧美在线视频导航| 日本高清久久天堂| 国产精品91在线| 亚洲精品xxxx| 日韩免费在线免费观看| 欧美中文字幕第一页| 国产精品一区二区久久久久| 国产成人福利网站| 欧美成人激情视频| 日本精品va在线观看| 色一情一乱一区二区| 亚洲理论电影网| 性夜试看影院91社区| 久久久av电影| 深夜福利一区二区| 国产视频久久久久| 色偷偷综合社区| 成人免费黄色网| 亚洲天堂免费在线| 国产精品网红福利| 亚洲精品wwww| 国产精品欧美一区二区| www国产91| 中文字幕精品久久久久| 91九色在线视频| 97精品一区二区视频在线观看| 国产日产亚洲精品| 97超视频免费观看| 亚洲欧美在线一区二区| 久久久久久国产精品久久| 欧美一区二区三区免费观看| 亚州av一区二区| 国产精品流白浆视频| www国产精品com| 色yeye香蕉凹凸一区二区av| 国产做受69高潮| 美女久久久久久久久久久| 欧美激情亚洲自拍| 欧美xxxx18国产| 成人a在线视频| 国产人妖伪娘一区91| 国产主播喷水一区二区| 插插插亚洲综合网| 欧美孕妇孕交黑巨大网站| 国产精品白丝jk喷水视频一区| 亚洲无限乱码一二三四麻| 国产视频久久网| 欧美亚洲免费电影| 日韩一区二区久久久| 国产精品久久久999| 中国人与牲禽动交精品| 国产精品直播网红| 欧美高清第一页| 欧美日韩在线观看视频| 欧美电影院免费观看| 成人国产精品久久久| 精品国产31久久久久久| 国产一区二区三区在线观看网站| 亚洲欧美999| 亚洲天堂免费在线| 亚洲精品美女免费| 亚洲欧美日韩国产中文| 亚洲成人黄色在线| 欧美性色视频在线| 欧美成人黑人xx视频免费观看| 亚洲美女精品久久| 91日本视频在线| 色综合久久天天综线观看| 日韩有码在线观看| 久久99国产精品久久久久久久久|