如何检查浮子是否有两个有效数字?

时间:2012-11-04 16:38:15

标签: objective-c cocoa-touch unit-testing floating-point nsstring

我正在编写单元测试以确定字符串值是否显示2个有效数字,即。 “N.NN”

    strokeValue = [NSString stringWithFormat:@"%.2f",someFloatValue];

如何编写断言的测试,我的字符串总是有2位小数?

2 个答案:

答案 0 :(得分:3)

由于您使用%.2f格式说明符格式化浮点值,因此根据定义,结果字符串将始终具有两个小数位。如果someFloatValue为5,您将获得5.00。如果someFloatValue为3.1415926,您将获得3.14。

无需测试。对于给定的格式说明符,它总是如此。

编辑:我发现您可能确实想要确认您实际使用的是正确的格式说明符。检查结果字符串的一种方法是:

NSRange range = [strokeValue rangeOfString:@"."];
assert(range.location != NSNotFound && range.location == strokeValue.length - 3, @"String doesn't have two decimals places");

答案 1 :(得分:1)

NSRegularExpression *regex = [NSRegularExpression  regularExpressionWithPattern:@"\.[0-9]{2}$" options:0 error:nil];
if([regex numberOfMatchesInString:strokeValue options:0 range:NSMakeRange(0, [strokeValue length])]) {
    // Passed
} else {
    // failed
}

(未测试的)