2
我試圖通過表達式-log2(realmin)找到在Matlab中2 ^( - x)= realmin的最大值x。結果是1022.但是,當我嘗試代碼2 ^( - x)> 0(範圍從1023到1074的x)時,結果爲1(真)。根據我的理解,realmin是最小的正浮點數。那麼,爲什麼-log2(realmin)沒有給出最大的x使得2 ^( - x)> 0?2 ^( - x)= Matlab中的realmini
我試圖通過表達式-log2(realmin)找到在Matlab中2 ^( - x)= realmin的最大值x。結果是1022.但是,當我嘗試代碼2 ^( - x)> 0(範圍從1023到1074的x)時,結果爲1(真)。根據我的理解,realmin是最小的正浮點數。那麼,爲什麼-log2(realmin)沒有給出最大的x使得2 ^( - x)> 0?2 ^( - x)= Matlab中的realmini
如前面的評論所述,realmin函數返回最小的歸一化數字。你可以去儘可能2 ^( - 1075),而使用非規格化數,因爲我發現使用下面的非常簡單的腳本:
%% 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編號。反正常(不太精確)可能更小。請參閱https://en.wikipedia.org/wiki/Denormal_number –