【发布时间】:2014-03-28 07:23:36
【问题描述】:
在编写一些代码以确保用户输入有效时,我遇到了std::numeric_limits<T>::min(); 的问题,其中 T 是浮点类型,即双精度/浮点等。
使用-std::numeric_limits<double>::max(); 可以让我获得真正的最小值,但您会期望std::numeric_limits<double>::min(); 会返回该值。
为什么std::numeric_limits<double>::min(); 不返回这些类型的最小可能值,而是强制我们使用std::numeric_limits::lowest 或-std::numeric_limits<double>::max();?
【问题讨论】:
-
您正在将一个数字与该类型的最小值进行比较,以查看它是否小于该值。这没有意义,因为如果它小于最小值,则最小值必须是那个数字,然后它不再小于最小值。