jvr*_*sem 2 language-agnostic precision matlab bit-manipulation
epsMATLAB中的例程实质上返回浮点数之间的正距离.它也可以采用可选参数.
我的问题:MATLAB如何计算这个值?(它是使用查找表,还是使用某种算法在运行时计算它,或其他什么......?)
相关:在给定浮点数的情况下,如何以任何提供位访问的语言计算?
特别是对于MATLAB,它是2 ^( - 53),因为MATLAB默认使用双精度.这是图表:
它是符号的一位,指数的11位和分数的其余位.
d = eps(x),其中x数据类型为single或double,返回正距离abs(x)到下一个相同精度的较大浮点数x.
由于并非所有分数在数字线上的间距相等,因此不同分数将在相同精度内显示到下一个浮点的不同距离.他们的位代表是:
1.0 = 0 01111111111 0000000000000000000000000000000000000000000000000000
0.9 = 0 01111111110 1100110011001100110011001100110011001100110011001101
Run Code Online (Sandbox Code Playgroud)
两者的符号都是正(0),指数不相等,当然它们的分数差别很大.这意味着下一个浮点数将是:
dec2bin(typecast(eps(1.0), 'uint64'), 64) = 0 01111001011 0000000000000000000000000000000000000000000000000000
dec2bin(typecast(eps(0.9), 'uint64'), 64) = 0 01111001010 0000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
因此,它们不一样eps(0.9)~=eps(1.0).