Converta a notação exponencial para o número decimal no awk

2

Eu tenho um arquivo separado por espaço. Este arquivo contém texto, bem como números no formato exponencial. Eu quero converter números exponenciais em valores decimais reais. Alguém pode sugerir como posso conseguir isso?

    
por John 11.10.2016 / 20:19

2 respostas

7

Com o GNU awk :

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

gawk armazena o que é correspondido pelo separador de registro na variável RT que convertemos em ponto flutuante sem expoente com o CONVFMT .

Para maior precisão, por exemplo, para 1e123 ser transformado em 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 em vez de 999999999999999977709969731404129670057984297594921577392083322662491290889839886077866558841507631684757522070951350501376 , com gawk 4.1 ou superior, adicione -M -v PREC=1000 (1000 é o número de bits )

    
por 11.10.2016 / 20:34
0

tente isso

echo "3.85196e+06" | perl -ne 'printf "%d\n", $_;'
    
por 01.03.2018 / 17:38