小编m61*_*615的帖子

为什么计算机科学中“(eps * 0.5) + 1”不大于“1”?

我正在学习Matlab,我不明白为什么(eps * 0.5) + 1不大于1。

eps

ans =

     2.220446049250313e-16

fprintf('%.52f\n', eps);
0.0000000000000002220446049250313080847263336181640625
sign(eps)

ans =

     1

% 1 means that eps is >= 0
eps >= 0

ans =

  logical

   1

eps > 0

ans =

  logical

   1

eps < 0

ans =

  logical

   0

% so, now I take half of eps
my_half_eps = eps * 0.5;
my_half_eps

my_half_eps =

     1.110223024625157e-16

fprintf('%.52f\n', my_half_eps);
0.0000000000000001110223024625156540423631668090820312
sign(my_half_eps)

ans =

     1

% half eps is positive
my_half_eps >= 0

ans …
Run Code Online (Sandbox Code Playgroud)

math floating-point precision matlab epsilon

0
推荐指数
1
解决办法
89
查看次数

标签 统计

epsilon ×1

floating-point ×1

math ×1

matlab ×1

precision ×1