我对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