如何使两个不同长度的双变量变得相等

时间:2014-04-03 06:47:34

标签: c++ visual-c++

我是Visual C ++的新手,我有两个双变量,让我们说AA = 10.650406b = 10.65040606439,我怎样才能使它们相等?

这是一个例子

AA = 10.650406;

if(a == tempfunc(zz))    执行TRUEFUNCTION 其他    偏见FALSEFUNCTION

变量AA是double,而函数tempfunc返回double,如果值AA是10.650406,而tempfunc的返回值是10.65040606439。问题是如何使这些值相等所以我可以执行函数TRUEFUNCTION

2 个答案:

答案 0 :(得分:2)

典型的解决方案是使用“epsilon值”比较差异。像

这样的东西
const double eps = 0.000001;  // Adjust this to match the "perecision" you need.

if (abs(a-b) < eps)
{
    // Values are almost equal
}

答案 1 :(得分:0)

我想你的问题是:如何对这两个号码进行检查,但并非对所有人都这样......:

10.123 == 10.1234 (TRUE)
10.123 == 11.123 (FALSE)

如果小数点分隔符后面有一个固定的位数(在你的例子中是6),你可以这样做:

int a2 = a * 10e6;
int b2 = b * 10e6; // (conversion to integers; so the digits smaller than the 6th digit will be removed)

现在您可以查看:

if (a2 == b2)
    {
    //do your thing
    }

简而言之:

if ( ((int) a*10e6) == ((int) b*10e6))
    {
    //do your thing
    }