有没有办法计算-log10values。
其中值非常小,即3*e-178或e-320。
我试过用公式log((1/value),10)打开办公室,它工作得很好,但当它遇到非常小的值时,它会给出错误,比如不可能除以零。
我想当我使用perl、python或R时,也会发生同样的事情。
请帮助将这些值转换为-log10value
谢谢
注意:我想计算以10为底的值的负对数值
发布于 2013-02-22 19:01:17
一个perl one内联程序:
perl -e 'print log($ARGV[0])/log(10),"\n"' 3e-320
输出:
-319.522883580228
发布于 2013-02-22 18:33:27
在R中:
x <- 3e-320
log10(x)
#-319.5229
y <- 3*exp(-320)
log10(y)
#-138.4971
对于大指数:
library(Brobdingnag)
x <- 3*as.brob(10)^(-1000)
log10(x)
#-999.5229
y <- 3*as.brob(exp(1))^(-1000)
log10(y)
#-433.8174
或者:
log10(3)-1000
#-999.5229
发布于 2013-02-22 18:06:34
在Python中:
import math
math.log10(3e-320)
返回
-319.5228835802284
要以非常小的值获取有关Python功能的更多信息:
import sys
sys.float_info
返回(取决于您的系统):
sys.float_info(max=1.7976931348623157e+308,
max_exp=1024,
max_10_exp=308,
min=2.2250738585072014e-308,
min_exp=-1021,
min_10_exp=-307,
dig=15,
mant_dig=53,
epsilon=2.220446049250313e-16,
radix=2,
rounds=1)
当math.log10(3e-320)
返回正确的值时,math.log10(3e-325)
会引发一个ValueError: math domain error
。
https://stackoverflow.com/questions/15021523
复制相似问题