0

我需要知道一个 int64_t 有什么小数,有多少。这应该放在 if-else-statement 中。我试过这段代码,但它会导致应用程序崩溃。

        NSNumber *numValue = [NSNumber numberWithInt:testAnswer];
        NSString *string = [numValue stringValue];
        NSArray *stringComps = [string componentsSeparatedByString:@"."];
        int64_t numberOfDecimalPlaces = [[stringComps objectAtIndex:1] length];
        if (numberOfDecimalPlaces == 0) {
            [self doSomething];
            } else {
            [self doSomethingElse];
            }
4

1 回答 1

0

你的问题没有多大意义;您正在NSNumber从创建对象,int因此它永远不会有小数位,因为int无法存储它们。您的代码崩溃的原因是它假定组件数组始终至少有 2 个元素长(当您使用 时objectAtIndex:1)。

这更好,虽然仍然不是那么好:

NSString *answer = ...;   // From somewhere
NSArray *stringComps = [answer componentsSeparatedByString:@"."];
if ([stringComps count] == 0) {
    [self doSomething];
} else if [stringComps count] == 1) {
    [self doSomethingElse];
} else {
    // Error! More than one period entered
}

这仍然不是一个很好的测试,因为它只测试是否.输入了句点 ( ),而不是有效数字。

于 2013-06-17T07:31:07.473 回答