我對awk
的行爲感興趣,同時執行浮點數的計算。它導致我對錶格數據進行錯誤的計算。awk中的浮點計算
$ awk 'BEGIN {print 2.3/0.1}'
23 <-- Ok
$ awk 'BEGIN {print int(2.3/0.1)}'
22 <-- Wrong!
$ awk 'BEGIN {print 2.3-2.2==0.1}'
0 <-- Surprise!
$ awk 'BEGIN {print 2.3-2.2>0.1}' <-- Din't produce any output :(
$ awk 'BEGIN {print 2.3-2.2<0.1}'
1 <-- Totally confused now ...
有人可以指出什麼在這裏?
EDIT 1
正如指出由@fedorqui,第二最後一個命令的輸出變爲文件名爲0.1因爲重定向操作符(>)的。
那麼我該如何執行大於(>)的操作?
解決它也被@fedorqui
$ awk 'BEGIN {print (2.3-2.2>0.1)}'
0 <-- Wrong!
+1有趣的問題。我發現了一些信息 - > http://www.gnu.org/software/gawk/manual/html_node/Floating-Point-Issues.html還要注意'awk'BEGIN {print 2.3-2.2> 0.1}''寫道名稱爲'0.1'的文件中'2.3-2.2'的結果。 – fedorqui
@fedorqui我也搜索了這個話題。他們所說的只是預料之外的行爲!我該如何準確解決我的問題?我嘗試用'perl'解決問題,但不幸的是,它也可能以不同的方式行事。 – jkshah
@fedorqui感謝您指出。我用更新查詢更新了問題! – jkshah