【问题标题】:Does AWK understand number written in in E notation?AWK 能理解用 E 表示法写的数字吗?
【发布时间】:2012-11-16 15:06:19
【问题描述】:

我有一个制表符分隔的文件,其中包含几列,其中一列包含以这样的格式编写的数字

4.07794484177529E-293

我想知道 AWK 是否理解这种表示法? IE。我只想获取该列中数字小于 0.1 的行。

但我不确定 AWK 是否会理解“4.07794484177529E-293”是什么 - 它可以对这种格式进行算术比较吗?

【问题讨论】:

  • 试一试不是比在 SO 上提出问题更快吗?你会学到更多。如果您尝试使用类似awk 的命令,它们很少会伤害您或您的计算机。可能发生的最糟糕的情况是,说“语法错误”或类似的话会伤害你的自尊。
  • 附和乔纳森的话:我曾经也害怕探索性学习——那种奇怪的、非理性的害怕打破某些东西(即使这种情况很少发生),或者不得不挣扎没有得到正确的结果。但你可以说是“潜入冰冷的水中”,你会发现其实真的很好玩。你会变得自愿地尝试打破事物,只是为了检验你对情境的假设,而这正是你形成理解新事物的心智模型的方式。

标签: awk


【解决方案1】:

是的,要回答您的问题,awk 确实理解 E 表示法。

您可以通过以下方式确认:

awk '{printf "%f\n", $1}' <<< "4.07794484177529E-3"
0.004078

一般来说,awk uses double-precision floating-point numbers to represent all numeric values。这为您提供了1.7E–3081.7E+308 之间的范围,因此您可以使用4.07794484177529E-293

另外:您可以指定如何使用 awk 格式化浮点数的打印,如下所示:

awk '{printf "%5.8f\n", $1}' <<< "1.2345678901234556E+4"
12345.67890123

解释:

  • %5.8f 是浮点数的格式
  • . 之前的 5 部分指定要在小数点前打印多少位
  • . 后面的8 部分指定要在小数点后打印多少位

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2013-02-07
    • 1970-01-01
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2014-05-28
    相关资源
    最近更新 更多