【问题标题】:How to create vector (10^16 + 1, 10^16 + 2, ... , 10^16 + 1000) using R?如何使用 R 创建向量 (10^16 + 1, 10^16 + 2, ... , 10^16 + 1000)?
【发布时间】:2018-11-10 16:03:46
【问题描述】:

我想创建以下向量 (10^16 + 1, 10^16 + 2, ... , 10^16 + 1000)。 但如果我这样尝试:

daten <- rep(1e+16,1000)
daten + 1:1000

这只是一个近似值:

[1] 10000000000000000 10000000000000002 10000000000000004 10000000000000004
[5] 10000000000000004 10000000000000006 10000000000000008 10000000000000008
[9] 10000000000000008 10000000000000010 10000000000000012 10000000000000012
[13] 10000000000000012 10000000000000014 10000000000000016 10000000000000016 
 ......

如何让 R 计算更精确? 谢谢

【问题讨论】:

  • 精确多少?
  • R 不是(至少开箱即用的)任意精度计算器。在您的示例中,您正在处理浮点运算。 en.wikipedia.org/wiki/IEEE_754#Basic_formats
  • @Rich Scriven:这样最后一位数字是正确的

标签: r precision mantissa


【解决方案1】:

Rmpfr 包可让您根据需要获得尽可能高的精度。使用 mpfr 函数创建数字,指定值 + 您需要的精度位数。

library(Rmpfr)
daten <- mpfr(1:1000, 120)
daten <- daten + mpfr(1e16, 120)
print(daten[1:5])

这会产生以下结果:

5 'mpfr' numbers of precision  120   bits 
[1] 10000000000000001 10000000000000002 10000000000000003 10000000000000004 10000000000000005

【讨论】:

    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-20
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多