AWK 错误参数超出范围?如何解决这个问题呢?

AWK error argument is out of the range? How to solve this problem?

这是我文件的一部分

4.997 0.0110329
4.998 0.0110245
4.999 0.0110324
5 0.0110272

当我 运行 我的脚本时

#!/bin/bash
awk '{=((0.231771*exp(-/0.00142118)+0.299638*exp(-/0.0500264)+0.318124*exp(-/0.332495)+0.150467*exp(-/1.8087))-); print}' lut_ver_eps_900_1100_v5.xvg | tee lut_ver_eps_900_1100_v5_roznice.xvg

我收到类似

的错误
1: (FILENAME=lut_ver_eps_900_1100_v5.xvg FNR=5001) ostrzeżenie: exp: argument -3518.2 jest poza zasięgiem

翻译成英语

1: (FILENAME=lut_ver_eps_900_1100_v5.xvg FNR=5001) warning: exp: argument -3518.2 is out of range

我应该改变什么?

我得到结果

4.997 -0.00153571
4.998 -0.00153256
4.999 -0.00154571
5 -0.00154575

却不知万事大吉

exp(-1300) 会计算出一个非常小的值,非常接近于 0。它太小了,以至于计算结果无法用机器的浮点格式表示。可能 awk 正在输出“0”,这取决于您的目标,可能没问题。

exp 确实

Return the exponential of x (e ^ x) or report an error if x is out of range. The range of values x can have depends on your machine’s floating-point representation.

如果你不想有错误,而是零,你可以替换例如

exp(-10000)

使用

2.7183^(-10000)

2.7183 替换为 e 后,近似值足以满足您的需求