awk 读取浮点数精度:无法读取小浮点数,例如4e-320
awk read float precision: cannot read small floats, e.g. 4e-320
我无法 awk
或 gawk
读取科学计数法中的小浮点数并将它们正确解释为浮点数。
我只想用 awk 输出高于小阈值的数字。
示例:
考虑以下输入:
4
3e-20
4.5e-320
3
1e-10
我想以 1e-15 为阈值,所以我执行以下操作:
echo -e "4\n3e-20\n4.5e-320\n3\n1e-10" | awk ' > 1e-15'
给出输出:
4
4.5e-320
3
1e-10
当然4.5e-320没有通过1e-15的门槛,但是awk
和gawk
拒绝不了!
我查了 (g)awk
浮点精度。它似乎将 only 应用于算术运算 within awk.
因此,将 awk ' > 1e-15'
替换为 gawk -v PREC="double" ' > 1e-15'
也会失败。它也因 PREC="quad"
而失败
因此,我得出结论 (g)awk
不是 reading 4.5e-320 作为浮点数,而是字符串?
我从 awk 版本 3.1.5 得到了预期的输出。
我从 awk 版本 3.1.7 得到你的输出。
您可以强制 awk 将字符串转换为数字,方法是向其添加零。
所以试试这个 awk 脚本:
printf '4\n3e-20\n4.5e-320\n3\n1e-10\n' | awk '+0 > 1e-15'
我无法 awk
或 gawk
读取科学计数法中的小浮点数并将它们正确解释为浮点数。
我只想用 awk 输出高于小阈值的数字。
示例:
考虑以下输入:
4
3e-20
4.5e-320
3
1e-10
我想以 1e-15 为阈值,所以我执行以下操作:
echo -e "4\n3e-20\n4.5e-320\n3\n1e-10" | awk ' > 1e-15'
给出输出:
4
4.5e-320
3
1e-10
当然4.5e-320没有通过1e-15的门槛,但是awk
和gawk
拒绝不了!
我查了 (g)awk
浮点精度。它似乎将 only 应用于算术运算 within awk.
因此,将 awk ' > 1e-15'
替换为 gawk -v PREC="double" ' > 1e-15'
也会失败。它也因 PREC="quad"
因此,我得出结论 (g)awk
不是 reading 4.5e-320 作为浮点数,而是字符串?
我从 awk 版本 3.1.5 得到了预期的输出。
我从 awk 版本 3.1.7 得到你的输出。
您可以强制 awk 将字符串转换为数字,方法是向其添加零。
所以试试这个 awk 脚本:
printf '4\n3e-20\n4.5e-320\n3\n1e-10\n' | awk '+0 > 1e-15'