首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算非常小的值的-log10

计算非常小的值的-log10
EN

Stack Overflow用户
提问于 2013-02-22 18:05:18
回答 5查看 1.5K关注 0票数 2

有没有办法计算-log10values。

其中值非常小,即3*e-178或e-320。

我试过用公式log((1/value),10)打开办公室,它工作得很好,但当它遇到非常小的值时,它会给出错误,比如不可能除以零。

我想当我使用perl、python或R时,也会发生同样的事情。

请帮助将这些值转换为-log10value

谢谢

注意:我想计算以10为底的值的负对数值

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-22 19:01:17

一个perl one内联程序:

代码语言:javascript
运行
复制
perl -e 'print log($ARGV[0])/log(10),"\n"' 3e-320

输出:

代码语言:javascript
运行
复制
-319.522883580228
票数 3
EN

Stack Overflow用户

发布于 2013-02-22 18:33:27

在R中:

代码语言:javascript
运行
复制
x <- 3e-320
log10(x)
#-319.5229

y <- 3*exp(-320)
log10(y)
#-138.4971

对于大指数:

代码语言:javascript
运行
复制
library(Brobdingnag)
x <- 3*as.brob(10)^(-1000)
log10(x)
#-999.5229

y <- 3*as.brob(exp(1))^(-1000)
log10(y)
#-433.8174

或者:

代码语言:javascript
运行
复制
log10(3)-1000
#-999.5229
票数 6
EN

Stack Overflow用户

发布于 2013-02-22 18:06:34

在Python中:

代码语言:javascript
运行
复制
import math
math.log10(3e-320)

返回

代码语言:javascript
运行
复制
-319.5228835802284

要以非常小的值获取有关Python功能的更多信息:

代码语言:javascript
运行
复制
import sys
sys.float_info

返回(取决于您的系统):

代码语言:javascript
运行
复制
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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15021523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档