首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pi不是pi,但是Pi是pi....although pi不是pi吗?

pi不是pi,但是Pi是pi....although pi不是pi吗?
EN

Stack Overflow用户
提问于 2013-07-02 14:23:00
回答 1查看 550关注 0票数 0

所以,我有一个问题,主要是出于好奇。我在用Paul Teetor's 学习Pi。当我在玩一些命令的时候,我发现了一个奇怪的现象:

代码语言:javascript
复制
> v
[1] 3.000000 3.140000 4.000000 3.141593 3.141593 3.141593 3.141593
> pi == v
[1] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE

所以看看R认为π是什么,

代码语言:javascript
复制
> pi
[1] 3.141593

显然,R给了我关于什么是pi的相互矛盾的意见,或者为了更清楚地表明它,我把两者放在一个矩阵中:

代码语言:javascript
复制
> v <- c(v, pi==v)
> mat <- matrix(v, 7, 2)
> mat
         [,1] [,2]
[1,] 3.000000    0
[2,] 3.140000    0
[3,] 4.000000    0
[4,] 3.141593    1
[5,] 3.141593    0
[6,] 3.141593    1
[7,] 3.141593    0

很明显,R认为π在第4行是3.141593,而不是在第5行,然后回到第6行的3.141593,改变了7的想法,等等。有谁知道这个口译员犹豫不决的原因是什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-02 14:30:57

我可不这么做,

代码语言:javascript
复制
test <- function(digits, replications=10)
  c(representation = as.character(signif(pi, digits)), 
    equality = any(replicate(replications, pi == signif(pi, digits))))

t(sapply(1:16, test))

      representation     equality
 [1,] "3"                "FALSE" 
 [2,] "3.1"              "FALSE" 
 [3,] "3.14"             "FALSE" 
 [4,] "3.142"            "FALSE" 
 [5,] "3.1416"           "FALSE" 
 [6,] "3.14159"          "FALSE" 
 [7,] "3.141593"         "FALSE" 
 [8,] "3.1415927"        "FALSE" 
 [9,] "3.14159265"       "FALSE" 
[10,] "3.141592654"      "FALSE" 
[11,] "3.1415926536"     "FALSE" 
[12,] "3.14159265359"    "FALSE" 
[13,] "3.14159265359"    "FALSE" 
[14,] "3.1415926535898"  "FALSE" 
[15,] "3.14159265358979" "FALSE" 
[16,] "3.14159265358979" "TRUE"  

只返回16位数的真,这是可以理解的,因为双倍的有限精度。

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

https://stackoverflow.com/questions/17428167

复制
相关文章

相似问题

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