2^(-x)=Matlab中的realmin
我试图通过表达式-log2(realmin)在Matlab中找到2^(-x)=realmin的最大值x。结果是1022。但是,当我尝试从1023到1074的x的代码2^(-x)>0时,结果是1(True)。据我所知,realmin是最小的正浮点数。那么,-log2(realmin)没有给出最大的x,使得2^(-x)>0的原因是什么呢?正如前面的评论所说,realmin函数返回最小的标准化数。在使用非规范化数字时,您可以使用2^(-1075),正如我使用以下非常简单的脚本所发现的:2^(-x)=Matlab中的realmin,matlab,floating-point,precision,Matlab,Floating Point,Precision,我试图通过表达式-log2(realmin)在Matlab中找到2^(-x)=realmin的最大值x。结果是1022。但是,当我尝试从1023到1074的x的代码2^(-x)>0时,结果是1(True)。据我所知,realmin是最小的正浮点数。那么,-log2(realmin)没有给出最大的x,使得2^(-x)>0的原因是什么呢?正如前面的评论所说,realmin函数返回最小的标准化数。在使用非规范化数字时,您可以使用2^(-1075),正如我使用以下非常简单的脚本所发现的: %% Scri
%% Script to check the smallest possible power of two in Matlab
power = 0;
while 2^power > 0
power = power - 1;
end
sprintf('%d', power)
这是你的第一选择。您还可以使用eps(0)
在Matlab中获得最小的非规范化数字,您将得到:
Trial>> log2(eps(0))
ans =
-1074
这是正确的
你应该阅读维基百科中关于非规范化/规范化数字的页面,了解更多信息。我不知道MatLab,但我猜它是最小的正规范化FP数字。非规范化(精度较低)可以更小。看见