我有双(或浮点)变量,可能是"空",如没有有效值.如何使用内置类型float和double来表示这种情况?
一个选项是一个包含浮点数和布尔值的包装器,但这不起作用,因为我的库有容器存储双精度而不是表现为双精度的对象.另一个是使用NaN(std :: numeric_limits).但我认为无法检查变量是否为NaN.
如何解决需要"特殊"浮点值来表示数字以外的其他问题?
template <class T>
MyClass
{
public:
// ...
void MyMethod(T dbNumber)
{
// ...
T dbResult = do_some_operation_on_dbnumber(dbNumber);
if (IsInfinite(dbResult))
{
// ...
}
else if (IsIndefinite(dbResult))
{
// ...
}
else
{
// ...
}
// ...
}
static bool IsInfinite(T dbNumber)
{
// How do I implement this?
}
static bool IsIndefinite(T dbNumber)
{
// How do I implement this?
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
我的代码中有一个数学运算,有时会在模板变量中返回无限且不确定的结果.我想抓住这些无限期的结果.我怎么做?