我认为double的精度导致了这个问题,就像在类似的帖子中描述的那样,但我想知道是否有办法实现正确的结果.我正在使用比较两个参数的函数模板,如果它们相等则返回true.
template <class T>
bool eq(T one, T two)
{
if (one == two)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
它适用于eq(0.8,0.8),但它不适用于eq(0.8*0.2,0.16).正如我所提到的,我认为它与双精度有关,因为它也适用于int eq(8*2,16).