std:numeric_limits <double> :: epsilon definition </double>

时间:2011-06-06 06:03:20

标签: c++ double

numeric_limits::espilon返回1和下一个double之间的差异。那么,我是否应该理解两个相邻双打之间的距离并不总是相同的,例如在2和下一个双精度之间?

如果是,我可以解释一下吗?

2 个答案:

答案 0 :(得分:16)

随着距离零越远,浮点数的“密度”会逐渐减少

这是因为IEEE浮点数基本上以科学计数法存储,因此范围优于统一精度。 (如果它是统一的精度,它将是定点的,而不是浮点数。)

换句话说,数字以显着和* 2 指数 的形式存储,因此如果指数变大,则有效数字的微小变化会产生很大的变化。数字(反之亦然)。

所以不,你不能假设2和下一个双重之间的差异与epsilon相同;它不是。

答案 1 :(得分:2)

双打是浮点数。它们由一个符号,一个有效数字和一个指数组成。

指数越大,双重及其后继之间的差异越大。

指数越低,double和它的后继之间的差异越小。