怎么在Linux中金阿紅科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)換為數(shù)字?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
目前創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、東寶網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。
1)科學(xué)計(jì)數(shù)法轉(zhuǎn)為十進(jìn)制
[root@kevin ~]# printf "%f" 1.7615569e+06 1761556.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
需要注意: 這種方法,轉(zhuǎn)化結(jié)果中小數(shù)點(diǎn)后面都保留6位:
1)e后面的數(shù)字若是正數(shù),則小數(shù)點(diǎn)后面要保留6位,不夠的話,用0補(bǔ)上。
2)e后面的數(shù)字若是負(fù)數(shù),則小數(shù)點(diǎn)后面要保留6位,多的話,此時(shí)按照四舍五入,保留6位。
2)科學(xué)計(jì)數(shù)法轉(zhuǎn)為十進(jìn)制并保留兩位小數(shù)
[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%.2f",$0)}' 1761556.90
保留三位小數(shù)
[root@kevin ~]# echo "1.7615569e+06"| awk '{printf("%.3f",$0)}' 1761556.900
3)科學(xué)計(jì)數(shù)法轉(zhuǎn)為十進(jìn)制并取整
[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)科學(xué)計(jì)數(shù)法轉(zhuǎn)十進(jìn)制并四舍五入取整
[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)如何將小數(shù)點(diǎn)后無(wú)用的0去掉, 可以參考: 日常運(yùn)維的Shell腳本中截取字符串的做法,即用變量擴(kuò)展的方式
[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去除掉小數(shù)點(diǎn)之后的字符
[root@kevin ~]# echo "kevin.123"|sed "s/\.*//g" kevin123 \..*代表了小數(shù)點(diǎn)之后的1到多個(gè) [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到多個(gè)。故\.*只能替換掉小數(shù)點(diǎn)變成空。\_*同理。
.*代表1到多個(gè)。故\..*將小數(shù)點(diǎn)后的全部去掉了。\_.*同理。
7)shell中的數(shù)字計(jì)算說(shuō)明
1)bc方法 bc是比較常用的linux計(jì)算工具了,而且支持浮點(diǎn)運(yùn)算: [root@kevin ~]# a=`echo 1+1 | bc` [root@kevin ~]# echo $a 2 這種方法沒法解決浮點(diǎn)數(shù)運(yùn)算的精度問(wèn)題,如下幾種浮點(diǎn)數(shù)計(jì)算情況就傻X了! [root@kevin ~]# a=`echo 1+1 | bc` [root@kevin ~]# echo $a 2 [root@kevin ~]# b=`echo "1.2*1.2" | bc` [root@kevin ~]# echo $b 1.4 [root@kevin ~]# c=`echo "5.0/3.0" | bc` [root@kevin ~]# echo $c 1 [root@kevin ~]# d=`echo "scale=2;5.0/3.0" | bc` [root@kevin ~]# echo $d 1.66 [root@kevin ~]# e=`echo "scale=2;5.0/6.0" | bc` [root@kevin ~]# echo $e .83 2)expr方法 不支持浮點(diǎn)數(shù)計(jì)算,這是個(gè)坑,而且要注意數(shù)字與運(yùn)算符中的空格。 [root@kevin ~]# a=`expr 1+1` [root@kevin ~]# echo $a 1+1 [root@kevin ~]# a=`expr 1 + 1` [root@kevin ~]# echo $a 2 [root@kevin ~]# b=`expr 10 / 2` [root@kevin ~]# echo $b 5 3)$(())方法 同expr,不支持浮點(diǎn)數(shù)運(yùn)算 [root@kevin ~]# a=$((1+1)) [root@kevin ~]# echo $a 2 [root@kevin ~]# b=$((1 + 3 )) [root@kevin ~]# echo $b 4 4)let方法 不支持浮點(diǎn)數(shù)運(yùn)算,而且不支持直接輸出,只能賦值 [root@kevin ~]# let a=1+1 [root@kevin ~]# echo $a 2 [root@kevin ~]# let b=50/5 [root@kevin ~]# echo $b 10 [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方法 普通的運(yùn)算: [root@kevin ~]# a=`echo | awk '{print 1.0/2.0}'` [root@kevin ~]# echo $a 0.5 控制精度: [root@kevin ~]# b=`echo | awk '{printf("%.2f",1.0/2.0)}'` [root@kevin ~]# echo $b 0.50 傳遞參數(shù): [root@kevin ~]# c=`echo | awk -v a=1 -v b=3 '{printf("%.4f",a/b)}'` [root@kevin ~]# echo $c 0.3333 awk結(jié)合BEGIN(小數(shù)點(diǎn)后面保留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%
看完上述內(nèi)容,你們掌握怎么在Linux中金阿紅科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)換為數(shù)字的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
文章題目:怎么在Linux中金阿紅科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)換為數(shù)字-創(chuàng)新互聯(lián)
分享地址:http://aaarwkj.com/article14/dddgge.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、搜索引擎優(yōu)化、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站改版、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容