欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2020年05月19日 09:50:36   作者:散盡浮華  
這篇文章主要介紹了Linux下科學計數(shù)法(e)轉化為數(shù)字的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

1.2345678e2 = 123.45678
1.2345678e-2 = 0.012345678
1.7615562e+06 = 1761556.2
1.87982e7 = 18798200
1e3 = 1000

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

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

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

[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

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

2)科學計數(shù)法轉為十進制并保留兩位小數(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)科學計數(shù)法轉為十進制并取整

[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)科學計數(shù)法轉十進制并四舍五入取整

[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ù)點后無用的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去除掉小數(shù)點之后的字符

[root@kevin ~]# echo "kevin.123"|sed "s/\.*//g"
kevin123
 
\..*代表了小數(shù)點之后的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到多個。故\.*只能替換掉小數(shù)點變成空。\_*同理。
.*代表1到多個。故\..*將小數(shù)點后的全部去掉了。\_.*同理。

7)shell中的數(shù)字計算說明

 1)bc方法
bc是比較常用的linux計算工具了,而且支持浮點運算:
[root@kevin ~]# a=`echo 1+1 | bc`
[root@kevin ~]# echo $a
2
 
這種方法沒法解決浮點數(shù)運算的精度問題,如下幾種浮點數(shù)計算情況就傻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方法
不支持浮點數(shù)計算,這是個坑,而且要注意數(shù)字與運算符中的空格。
[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,不支持浮點數(shù)運算
[root@kevin ~]# a=$((1+1))
[root@kevin ~]# echo $a
2
[root@kevin ~]# b=$((1 + 3 ))
[root@kevin ~]# echo $b
4
 
4)let方法
不支持浮點數(shù)運算,而且不支持直接輸出,只能賦值
[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方法
普通的運算:
[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結合BEGIN(小數(shù)點后面保留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來搞數(shù)學計算。

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

相關文章

  • Linux中使用mtime查看文件的最后修改時間的操作方法

    Linux中使用mtime查看文件的最后修改時間的操作方法

    在?Linux?系統(tǒng)中,mtime?是文件的一個重要屬性,它記錄了文件的最后修改時間,了解文件的最后修改時間對于系統(tǒng)管理和數(shù)據(jù)追蹤非常重要,在本文中,我們將深入探討如何使用?mtime?查看文件的最后修改時間,需要的朋友可以參考下
    2024-05-05
  • Linux常用命令全集(超全面)

    Linux常用命令全集(超全面)

    本文是小編日常收集整理的有關linux常用命令的知識,非常不錯具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-10-10
  • ssh自動登錄的4種實現(xiàn)方法

    ssh自動登錄的4種實現(xiàn)方法

    這篇文章主要介紹ssh自動登錄的幾種實現(xiàn)方法,需要的朋友可以參考下
    2013-02-02
  • awk命令、awk編程語言詳細介紹和實例

    awk命令、awk編程語言詳細介紹和實例

    這篇文章主要介紹了awk命令、awk編程語言詳細介紹和實例,講解了如awk中的記錄、域、分割符,awk的內建變量和運算符等,需要的朋友可以參考下
    2014-07-07
  • 詳解bash中的退出狀態(tài)機制

    詳解bash中的退出狀態(tài)機制

    這篇文章主要介紹了詳解bash中的退出狀態(tài)機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • shell腳本操作mysql數(shù)據(jù)庫刪除重復的數(shù)據(jù)

    shell腳本操作mysql數(shù)據(jù)庫刪除重復的數(shù)據(jù)

    今天小編就為大家分享一篇關于shell腳本操作mysql數(shù)據(jù)庫刪除重復的數(shù)據(jù),小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • bash if條件判斷的使用

    bash if條件判斷的使用

    本文主要介紹了bash if條件判斷的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 完美解決mac環(huán)境使用sed修改文件出錯的問題

    完美解決mac環(huán)境使用sed修改文件出錯的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qmac環(huán)境使用sed修改文件出錯的問題。
    2017-04-04
  • linux命令詳解之chkconfig命令使用方法

    linux命令詳解之chkconfig命令使用方法

    chkconfig命令主要用來更新(啟動或停止)和查詢系統(tǒng)服務的運行級信息。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接,下面看一下它是如何使用的
    2014-01-01
  • 局域網(wǎng)遠程開機軟件制作代碼分享

    局域網(wǎng)遠程開機軟件制作代碼分享

    局域網(wǎng)遠程開機軟件制作代碼分享,大家可以參考使用,要網(wǎng)卡支持,需要gtk+2.0 的庫支持UI
    2013-12-12

最新評論