亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何比較Bash中的兩個浮點數?

如何比較Bash中的兩個浮點數?

LEATH 2019-06-24 16:55:59
如何比較Bash中的兩個浮點數?我正在努力比較bash腳本中的兩個浮點數。我必須要變量。let num1=3.17648e-22let num2=1.5現在,我只想對這兩個數字做一個簡單的比較:st=`echo "$num1 < $num2" | bc`if [ $st -eq 1]; then   echo -e "$num1 < $num2"else   echo -e "$num1 >= $num2"fi不幸的是,對于數字1的正確處理,我遇到了一些問題,因為數字1可以是“e-格式”。:(任何幫助,提示都歡迎!
查看完整描述

3 回答

?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

Bash只處理整數數學,但可以使用bc命令如下:


$ num1=3.17648E-22

$ num2=1.5

$ echo $num1'>'$num2 | bc -l

0

$ echo $num2'>'$num1 | bc -l

1

請注意,指數符號必須大寫。


查看完整回答
反對 回復 2019-06-24
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

最好用awk用于非整數數學。您可以使用這個bash實用程序函數:

numCompare() {
   awk -v n1="$1" -v n2="$2" 'BEGIN {printf "%s " (n1<n2?"<":">=") " %s\n", n1, n2}'}

并稱之為:

numCompare 5.65 3.14e-225.65 >= 3.14e-22numCompare 5.65e-23 3.14e-225.65e-23 < 3.14e-22numCompare 3.145678 3.1456793.145678 < 3.145679


查看完整回答
反對 回復 2019-06-24
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

更方便

使用Bash的數字上下文可以更方便地完成這一任務:

if (( $(echo "$num1 > $num2" |bc -l) )); then
  …fi

解釋

通過基本計算器命令bc返回1或0。

選擇-l等于--mathlib它加載標準的數學庫。

將整個表達式括在雙括號之間(( ))將這些值分別轉換為true或false。

請確保bc安裝了基本計算器包。

這同樣適用于科學格式的浮標,提供了大寫字母。E被雇用,例如num1=3.44E6


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 646 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號