Re: [問題] shell浮點數運算問題

看板Linux作者 (小建)時間7年前 (2018/12/07 00:05), 編輯推噓0(1115)
留言17則, 7人參與, 7年前最新討論串3/3 (看更多)
※ 引述《zchien (小建)》之銘言: : 我用unix 系統 : 寫sh時,遇到了一個bug ,就是浮點數無法運算 : 我使用ntpdate去校正時間, 並且記錄校正了多少時間 : 例如:需要校正的時間是 0.000304 s : 我寫 : ntpdate -p 10.37.82.23 > time.txt : NTP= grep delay time.txt | awk ' ' {print $6} : # $NTP will show 類似 0.000304 : if [ $NTP -le 0.100001 ];then : ntpdate -u 10.37.82.23 : fi : # 如果NTP server 連線異常, $NTP will show 0.000000 : if [ $NTP -eq 0.000000 ];then : echo "NTP server not connect" : fi : 上面第一個if 會 不成立 , 可能類似浮點數運算, 他以為兩個都是0 : 第二個if 也會顯示錯誤, [0.000000 -eq 0.000000 ] 他竟然顯示不相等 : 請問這是什麼原因,我可以怎麼修正 我找到bc的用法了,但是會有問題 http://0rz.tw/FlVdf ntpdate -q 10.37.82.23 > time.txt # $NTP will show 類似 0.000304 NTP=$(grep delay time.txt | awk '{print $6}') if [ `echo "$NTP"|bc` -ge `echo 0.100001 |bc` ] ; then echo "NTP > 0.100001" if 我使用sh -vx script 去看它顯示狀態 這會顯示 +[ 0.000304 -ge 0.100001 ] +echo NTP > 0.100001 echo NTP > 0.100001 而且-ge 不論改成 -eq , -le 都是一樣的結果 請問這是什麼原因 用awk 也不行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.139.44 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1544112306.A.1A4.html

12/07 00:16, 7年前 , 1F
你參考的文有給BC指令阿,但是你的script不知道在幹嘛
12/07 00:16, 1F

12/07 00:17, 7年前 , 2F
上一篇有強者把可以動的程式給你了,先研究一下吧
12/07 00:17, 2F

12/07 00:38, 7年前 , 3F
強者的可用,很感謝,。我只是好奇,shell要如何用小數點
12/07 00:38, 3F

12/07 00:38, 7年前 , 4F
以下的數值,做運算,有人說bc可用,但我好像遇到系統bug
12/07 00:38, 4F

12/07 00:39, 7年前 , 5F
不論怎麼計算,都 比不出大小
12/07 00:39, 5F

12/07 06:35, 7年前 , 6F
12/07 06:35, 6F

12/07 09:06, 7年前 , 7F
前面不是也有人推文告訴你 bash 只支援整數嗎?
12/07 09:06, 7F

12/07 14:45, 7年前 , 8F
應該是你用錯
12/07 14:45, 8F

12/07 14:45, 7年前 , 9F
之前還用bc寫演算法作業
12/07 14:45, 9F

12/07 14:45, 7年前 , 10F
完全沒問題= =
12/07 14:45, 10F

12/07 22:02, 7年前 , 11F
所以你沒讀懂人家script在幹嘛阿.. shell只能用整數,就用bc
12/07 22:02, 11F

12/07 22:02, 7年前 , 12F
把小數點移走
12/07 22:02, 12F

12/10 22:06, 7年前 , 13F
我用Solaris 10系統會有錯誤,它認不得 | bc的寫法
12/10 22:06, 13F

12/12 10:24, 7年前 , 14F
等等,你知道|是pipeline了嗎?
12/12 10:24, 14F

12/14 23:11, 7年前 , 15F
K大,我知道pipeline
12/14 23:11, 15F

12/15 18:11, 7年前 , 16F
XD
12/15 18:11, 16F

12/18 18:43, 7年前 , 17F
你知道不同的 shell 有不同的腳本語言嗎?
12/18 18:43, 17F
文章代碼(AID): #1S2KYo6a (Linux)
討論串 (同標題文章)
文章代碼(AID): #1S2KYo6a (Linux)