c++ - 如何在 C++ 中检查音调中的 float ?

标签 c++

调音符(A,B)的简单方法

if (A < X && X < B) ...

不过貌似+INF,.NAN也在调音区

最佳答案

您的条件不是音程(diapason)。它在功能上等同于

X < std::min(A, B)

你只有一个上限,根本没有下限。


NaN 和 +Inf 的确切行为取决于浮点表示,这不是由 C++ 标准指定的,而是特定于 cpu 的。

如果我们假设通常使用的 IEEE-754,则 X=+Inf 和 X=NaN 都不能满足 A 和 B 的任何值的条件。


这是检查 float 是否在下限和上限之间(但两者都不相等)的方法:

X > low && X < high

low < X && X < high

同样,如果我们假设 IEEE-754,那么 X=+Inf 和 X=NaN 都不能满足任何低值和高值的条件。但是,由于可能无法保证 IEEE-754,因此未指定此类数字的行为。您可能需要明确支持外来硬件:

low < X && X < high && std::isfinite(X)

关于c++ - 如何在 C++ 中检查音调中的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38502039/

相关文章:

c++ - C 文件* 到 ostream/istream

c++ - 函数内部的 copyTo() 与 clone() ?

c++ - std::unordered_map 和由多个元素构建的键

c++ - 来自一个 dll 的函数调用另一个 dll 的同名函数

c++ - 使用 QSqlTableModel 获取重复记录

c++ - 我可以使用 lambda 函数或 std::function 对象代替函数指针吗?

c++ - 使用 Gradient Fill() 函数时无法编译代码

c++ - 如何确定数据点的两个分区(聚类)是否相同?

C++ 错误 "undefined reference to GPScoord::(double,double) etc."

c++ - 如何找到数字的反对数(以 2 为底)?