范围的长度等于Range.Max - Range.Min
例如," [0-1]"和" [3.5-4.5]"是长度为1的范围的例子。
那么长度为1的范围(如果有的话)具有最多的双精度数?
我的猜测是[-0.5 - 0.5]或[0-1],但无法证明这种方式或其他方式。
答案 0 :(得分:3)
我同意Timothy Shields发布的prior answer。这是一种更具体的理由。
让数字的“块”是具有相同指数和符号的数字集。每个块包含2 ^ 52个数字。如果您不想计算正零和负零,它们不会重叠,可论证的例外为零。
范围[0,0.5]包含带有指数0到1021,1022个块的所有数字。 (-0.5,0.5)包含2044个块。 [-0.5,0.5]包含所有这些数字加上两个终点。
更改为[0,1],使用指数0到1021删除负数的1022个块,并为[0.5,1]添加单个块。指数为1022的数字。
[1,2]是单个块,这是仅覆盖长度1的最后一个完整块。在(-2,2)之外的任何长度1范围只能包含部分块。
在2044 *(2 ^ 52)+2时,[ - 0.5,5]是明显的赢家。
答案 1 :(得分:2)
IEEE浮点数x的分布大致与1 / abs(x)成正比,因此其中具有最多可表示数字的长度-1范围是[-0.5,0.5]范围。