辩证的简单方法(A,B)
if (A < X && X < B) ...
但似乎+ INF,.NAN也存在于辩证中</ p>
答案 0 :(得分:2)
你的病情不是间隔(diapason)。它在功能上等同于
X < std::min(A, B)
你只有一个上限,没有下限。
NaN和+ Inf的行为究竟取决于浮点表示,它不是由C ++标准指定的,而是cpu特定的。
如果我们假设常用的IEEE-754,则X = + Inf,X = NaN都不能满足A和B的任何值的条件。
这是检查浮点数在下限和上限之间(但两者都不等)的方法:
X > low && X < high
或
low < X && X < high
同样,如果我们假设IEEE-754,那么X = + Inf,X = NaN都不能满足任何低和高值的条件。但是,由于可能无法保证IEEE-754,因此未指定此类数字的行为。您可能需要明确支持异国情调的硬件:
low < X && X < high && std::isfinite(X)