7

我没有任何好的参考std::numeric_limits<T>,但是网上的网站说这将返回它之后的最小数字std::numeric_limits<T>::epsilon()之间的差异。1据我所知int,下一个数字12,所以 epsilon 应该是1。但它是0(Linux,g++ 4.4.5)。这背后的原因是什么?

我知道在实践epsilon()中只对浮点类型有用,我只是在吹毛求疵。

4

2 回答 2

8

标准说 ([numeric.limits.members])

对所有浮点类型都有意义。

该标准还说 ([numeric.special])

许多值只需要在特定条件下才有意义(例如,epsilon() 仅在 is_integer 为 false 时才有意义)。任何不“有意义”的值都应设置为 0 或 false。

由于该值不是“有意义的”,因此标准要求值 0 表示它不是有意义的值。

于 2012-09-05T09:13:46.153 回答
2

我想说它返回数字被认为相等的范围,整数类型的范围应该是 0。

即,如果您正在创建可以处理整数和浮点类型的通用函数,您希望整数的范围为 0。

于 2012-09-05T09:14:05.763 回答