对于IEEE 754双精度数,长度为1的范围包含最多的双精度数?

时间:2015-12-07 23:19:59

标签: math double range ieee-754

范围的长度等于Range.Max - Range.Min

例如," [0-1]"和" [3.5-4.5]"是长度为1的范围的例子。

那么长度为1的范围(如果有的话)具有最多的双精度数?

我的猜测是[-0.5 - 0.5]或[0-1],但无法证明这种方式或其他方式。

2 个答案:

答案 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]范围。

WolframAlpha plot of 1 / abs(x)