溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

怎么在Linux中金阿紅科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)換為數(shù)字

發(fā)布時(shí)間:2021-05-08 17:30:47 來(lái)源:億速云 閱讀:188 作者:Leah 欄目:開(kāi)發(fā)技術(shù)

怎么在Linux中金阿紅科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)換為數(shù)字?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

什么是Linux系統(tǒng)

Linux是一種免費(fèi)使用和自由傳播的類(lèi)UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶(hù)、多任務(wù)、支持多線(xiàn)程和多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位,不夠的話(huà),用0補(bǔ)上。
2)e后面的數(shù)字若是負(fù)數(shù),則小數(shù)點(diǎn)后面要保留6位,多的話(huà),此時(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

命令解釋?zhuān)?br/>*代表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
 
這種方法沒(méi)法解決浮點(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)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI