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로 변환 하려면 gawk 4.1 이상을 사용하여 (1000은1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000999999999999999977709969731404129670057984297594921577392083322662491290889839886077866558841507631684757522070951350501376-M -v PREC=1000조금)

답변2

이 시도

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

관련 정보