Search code examples
c#c++nunitfloating-pointgoogletest

Difference between double comparisons in gtest (C++) and nunit (C#)


I have done porting of a c++ project with gtest tests to a c# project having an nunit test. Now I encounter problems with floating point precision.

in the nunit test I have being not ok (red)

Assert.AreEqual(0.7, 7 * 0.1); 

in the gtest test I have:

ASSERT_DOUBLE_EQ(0.7, 7 * 0.1);

which is ok (green)

The question now is WHY???


Solution

  • Alternatively you can add a third parameter, which is the maximum difference between the two values, as you can read here.

    public static void AreEqual (
        double expected,
        double actual,
        double delta
    )
    

    Verifies that two specified doubles are equal, or within the specified accuracy of each other. The assertion fails if they are not within the specified accuracy of each other.