在awk中将指数表示法转换为十进制数

在awk中将指数表示法转换为十进制数

我有空格分隔的文件。该文件包含文本以及指数格式的数字。我想将指数数字转换为实际的十进制值。有人可以建议我如何实现这一目标吗?

答案1

使用 GNU awk

gawk -v RS='[-+]?[0-9.]+[eE][-+]?[0-9]+' \
     -v ORS= \
     -v CONVFMT=%.1000g '{print $0 (RT == "" ? "" : +RT)}'

gawk将记录分隔符匹配的内容存储到RT变量中,我们将其转换为不带指数的浮点数CONVFMT

为了获得更高的精度,例如要1e123转换为1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000而不是999999999999999977709969731404129670057984297594921577392083322662491290889839886077866558841507631684757522070951350501376,使用 gawk 4.1 或更高版本添加-M -v PREC=1000(1000 是

答案2

尝试这个

echo "3.85196e+06" | perl -ne 'printf "%d\n", $_;'

相关内容