小编Kit*_*ara的帖子

为什么2 ^ 52在Matlab中等于2 ^ 52 + 1?以及如何解决它?

出于某种原因,2 ^ 52在Matlab中等于2 ^ 52 + 1,但为什么呢?我该如何解决这个问题?有关详细信息,请运行下面的代码并检查结果.

这是输出(带vpa):

>> format long
>> digits(500)
>> vpa(2^52)

ans =

4503599627370496.0

>> vpa(2^52+1)

ans =

4503599627370496.0

>> isequal(vpa(2^52), vpa(2^52+1))

ans =

     1

>> vpa(2^52+1)

ans =

4503599627370496.0

>> ans+1

ans =

4503599627370497.0

>> vpa(2^52+1000)

ans =

4503599627371496.0
Run Code Online (Sandbox Code Playgroud)

https://ibb.co/iDDAwF

(没有vpa的输出)

>> 2^52

ans =

    4.503599627370496e+015

>> 2^52+1

ans =

    4.503599627370497e+015

>> isequal(2^52, 2^52+1)

ans =

     0

>> 2^52+1

ans =

    4.503599627370497e+015

>> ans+1

ans =

    4.503599627370498e+015

>> 2^52+1000

ans =

    4.503599627371496e+015
Run Code Online (Sandbox Code Playgroud)

编辑:这不是重复,与浮点错误无关.

matlab

4
推荐指数
1
解决办法
144
查看次数

标签 统计

matlab ×1