我是单元测试的新手,我决定编写一个简单的计算器来研究这些概念,但我遇到了一个对我来说毫无意义的问题。STAssertEquals 因 2 个显然相同的双精度值而失败。我得到的错误是这个:'-2.89'应该等于'-2.89':
执行计算的代码是:
- (double)calculateOperation:(int)operation numberA:(double)numA numberB:(double)numB
{
    double result = 0;
    switch(operation)
    {
        case addition:
            result = numA + numB;
            break;
        case subtraction:
            result = numA - numB;
            break;
        case multiplication:
            result = numA * numB;
        default:
            break;
    }
    return result;
}
测试是
- (void)testSubtraction
{
    //Two double positive values
    double test1 = [calculator calculateOperation:subtraction numberA:4.45 numberB:7.34];
    STAssertEquals(test1, -2.89, nil);
}
我尝试了不同的值,似乎只有一定范围的值会导致 STAssertEquals 失败。
但是,如果我执行 STAssertEquals((4.45 - 7.34), -2.89, nil) 它可以正常工作。
我真的不知道怎么了。