我需要知道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];
}
答案 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
}
这仍然不是一个非常好的测试,因为它只测试是否输入了句点(.
),而不是有效数字。