iPhone中的Int十进制计数

时间:2013-06-17 07:24:30

标签: iphone ios count int decimal

我需要知道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];
            }

1 个答案:

答案 0 :(得分: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
}

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