【问题标题】:Why in MATLAB is realmax minus something still equal to realmax?为什么在 MATLAB 中 realmax 减去的东西仍然等于 realmax?
【发布时间】:2019-02-05 15:55:45
【问题描述】:

在 MATLAB 中,如果我执行 realmax - 1000000 == realmax,我会得到一个逻辑 1(真)作为答案。这是为什么呢?

【问题讨论】:

    标签: matlab numerical-computing


    【解决方案1】:

    您会得到一个真实的结果,因为1000000(即1e6)的值远小于double precision variablethe floating point relative accuracy 的值,其值等于或接近最大限制。例如:

    >> realmax-1e6==realmax  % Subtract 1 million
    
    ans =
      logical
    
       1       % Still equal; not big enough to register a change
    
    >> realmax-eps(realmax)==realmax  % Subtract the distance to the next largest value
    
    ans =
      logical
    
       0       % Unequal; yeah, that's big enough to matter
    

    简而言之,最大限制(即eps(realmax))的可表示数字之间的距离约为10^292。减去1e6很多 小值,得到的结果只是四舍五入回到原来的值。

    你可以找到更全面的处理浮点数的解释herehere

    【讨论】:

      猜你喜欢
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      相关资源
      最近更新 更多