双精度中一个旁边的最小数字是多少

时间:2016-07-31 02:37:30

标签: matlab double

double-precision number format中数字1旁边最近的较低数字是多少?如何在MATLAB中找到它?

例如,可以使用X查找正数X+eps(X)旁边的下一个较高数字。但如何立即降低数量?

2 个答案:

答案 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))