美文网首页
R 浮点运算中的精度问题

R 浮点运算中的精度问题

作者: 11的雾 | 来源:发表于2019-07-17 13:23 被阅读0次

    举个例子:

    >x <- seq(0,1,by=0.2)  # seq()生成序列的函数。
    >y <- seq(0,1,by=0.2)
    >y[4]
    [1]  0.6
    >x[3]
    [1]  0.4
    >1-x[3]
    [1] 0.6
    > y[4] > 1-x[3]
    [1] TRUE
    

    这里竟然出现了0.6大于0.6的情况。 这也是在计算机中经常出现的一个问题。(不过表示出来这样的结果起始应该算是R的缺陷,稍微高级的数学运算软件一般都会通过一些方法来克服),笔者这里想说之前写过一篇文章中python也有这样的问题

    简单来说,就是浮点数在计算机中的表达有限制,不能以任意精度存储,所以,尤其是微小的数字或者巨大的数字在运算时经常会出现一些意外情况。

    再举几个例子

    >seq(0, 1, 0.1)
    [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
    >seq(0,1,0.1) == c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1)
    [1]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
    >0.3 - 0.7 + 0.4 == 0
    [1] FALSE
    >sqrt(2)^2 == 2
    [1] FALSE
    

    因此,在处理R里面的数据时,尤其是在判断时,需要特别注意精度问题。

    相关文章

      网友评论

          本文标题:R 浮点运算中的精度问题

          本文链接:https://www.haomeiwen.com/subject/dvjqlctx.html