double-precision number format中数字1旁边最近的较低数字是多少?如何在MATLAB中找到它?
例如,可以使用X
查找正数X+eps(X)
旁边的下一个较高数字。但如何立即降低数量?
答案 0 :(得分:1)
format hex # So that the difference is easy to see
X-eps(X)
似乎工作得很好
答案 1 :(得分:0)
使用下面的代码,B是数字1旁边最直接的较低数字,即eps的一半:
A = uint64(0);
bits=[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0];
for i = 1: 64
A = bitset(A, i, bits(i));
end
fileID = fopen('bits.bin','w');
fwrite(fileID, A,'uint64');
fclose(fileID);
fileID = fopen('bits.bin');
B = fread(fileID,1,'*float64');
fclose(fileID);
disp(B);
disp(1.0-B);
disp(eps(1.0))