我没有任何好的参考std::numeric_limits<T>
,但是网上的网站说这将返回它之后的最小数字std::numeric_limits<T>::epsilon()
之间的差异。1
据我所知int
,下一个数字1
是2
,所以 epsilon 应该是1
。但它是0
(Linux,g++ 4.4.5)。这背后的原因是什么?
我知道在实践epsilon()
中只对浮点类型有用,我只是在吹毛求疵。
标准说 ([numeric.limits.members])
对所有浮点类型都有意义。
该标准还说 ([numeric.special])
许多值只需要在特定条件下才有意义(例如,epsilon() 仅在 is_integer 为 false 时才有意义)。任何不“有意义”的值都应设置为 0 或 false。
由于该值不是“有意义的”,因此标准要求值 0 表示它不是有意义的值。
我想说它返回数字被认为相等的范围,整数类型的范围应该是 0。
即,如果您正在创建可以处理整数和浮点类型的通用函数,您希望整数的范围为 0。