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 后,近似值足以满足您的需求
这是我文件的一部分
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 后,近似值足以满足您的需求