首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最低可评估的科学价值?

最低可评估的科学价值?
EN

Stack Overflow用户
提问于 2013-11-05 00:19:36
回答 2查看 1.6K关注 0票数 6

R是否存储最小的、可能具有代表性的科学价值?

澄清:在我目前的机器上:

代码语言:javascript
复制
>1e-300
[1] 1e-300

代码语言:javascript
复制
>1e-400
[1] 0

通过试验和错误,我知道它在我的机器上的e-324标记附近(在那里它也开始失去精度)。

代码语言:javascript
复制
>1e-324
[1] 0
>5e-324
[1] 4.940656e-324

我已经搜索过.Machine列表,它存储的值中没有一个包含值或我要寻找的指数。

编辑:

侧的链接线程表明这应该是.Machine$double.eps,即2.220446e-16。很明显现在不是这样了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-05 00:36:23

最小的标准化是double.xmin,如本页面所描述的。维基百科条目非常有趣,并且有一个低于正常范围的限制,即2^-1074,它大约是4.9406564584124654 x 10^-324 (如本·博尔克在评论中提到的那样)。R中的输出与此值相匹配。

double.epsilon不是你想的那样。这是最小的数字,你可以添加到1,如你得到的数字,将不会被承认为1。

我建议您阅读有关双操作是如何存储在内存中的以及双操作的基本知识。一旦您了解了一个双的存储方式,下限就很明显了。

票数 6
EN

Stack Overflow用户

发布于 2017-10-25 23:58:39

对于基本R,接受的答案仍然是正确的,但是使用包Rmpfr可以实现任意精度。示例:

首先,注意基本R中的问题

代码语言:javascript
复制
> p <- c("5e-600","2e-324","3e-324","4e-324", "5e-324","6e-324","7.1e-324","8e-324")
> as.numeric(p)
[1]  0.000000e+00  0.000000e+00 4.940656e-324 4.940656e-324 4.940656e-324 4.940656e-324
[7] 4.940656e-324 9.881313e-324

注意,当我们接近极限时,精度是一个问题,所有的值都是4.940656e-324

现在,使用'Rmpfr`‘包中的mpfr函数将字符串转换为浮动:

代码语言:javascript
复制
> library(Rmpfr)
> .N <- function(.) mpfr(., precBits = 20)
> .N(p)
8 'mpfr' numbers of precision  20   bits 
[1] 5.0000007e-600   2.00000e-324 2.9999979e-324   4.00000e-324 4.9999966e-324 5.9999959e-324
[7]   7.09999e-324   8.00000e-324
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19779806

复制
相关文章

相似问题

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