我无法让gawk
或4
3e-20
4.5e-320
3
1e-10
以科学计数法读取小浮点数并将其正确解释为浮点数。
我只想用awk输出一个小于阈值的数字。
示例:
考虑以下输入:
echo -e "4\n3e-20\n4.5e-320\n3\n1e-10" | awk '$1 > 1e-15'
我希望以1e-15为阈值,所以我执行以下操作:
4
4.5e-320
3
1e-10
给出输出:
awk
当然,4.5e-320未通过1e-15阈值,但gawk
和(g)awk
未能拒绝它!
我查了awk '$1 > 1e-15'
浮点精度。它似乎只将 应用于 awk中的算术运算。
因此,将gawk -v PREC="double" '$1 > 1e-15'
替换为PREC="quad"
也会失败。它也因(g)awk
因此,我得出结论,people_controller#person_params
不是读取 4.5e-320作为浮点数,而是一个字符串?
答案 0 :(得分:2)
我从awk版本3.1.5获得预期的输出。
我从awk 3.1.7版获得你的输出。
您可以强制awk通过向其添加零来将字符串转换为数字。
所以请尝试使用这个awk脚本:
printf '4\n3e-20\n4.5e-320\n3\n1e-10\n' | awk '$1+0 > 1e-15'