为啥这段Matlab代码会跳出循环

因为numprec此时已经小于eps(1.0)了。eps(1.0)是MATLAB里从1.0到下一个同样精度的浮点数的相对距离。当numprec小于这个精度当时候,MATLAB就认为while里的不等式不再成立了。
■网友
【为啥这段Matlab代码会跳出循环】 double 的精度是有限的,比如已知 double 的十进制有效数字不超过 20 位,当 numprec 的绝对值足够小的时候(比如小于 10^(-20) 的时候),1+numprec 保留 20 位十进制有效数字就是 1.0。
实际上 double 是二进制,这段代码在寻找 double 的二进制有效数字的个数。

■网友
莫名被邀...
这问题的细节不太懂,但从精度上考虑,觉得 @Gee Law 说的有理


    推荐阅读