Iphone 如何在IOS中检查数字是NSInteger还是浮点?

Iphone 如何在IOS中检查数字是NSInteger还是浮点?,iphone,ios,Iphone,Ios,我需要检查来自服务器的值是NSString、NSInteger还是float。对于字符串,我可以检查。但是我们如何区分浮点和整数呢 这是怎么做的 NSNumber * n = //from somewhere if (strcmp([n objCType], @encode(float)) == 0) { NSLog(@"this is a float"); } else if (strcmp([n objCType], @encode(int)) == 0) { NSLog(@

我需要检查来自服务器的值是NSString、NSInteger还是float。对于字符串,我可以检查。但是我们如何区分浮点和整数呢

这是怎么做的

NSNumber * n = //from somewhere
if (strcmp([n objCType], @encode(float)) == 0) {
    NSLog(@"this is a float");
} else if (strcmp([n objCType], @encode(int)) == 0) {
    NSLog(@"this is an int");
}
编辑

好的,让我们把它变得更一般

    NSNumber *anyNSObject = [NSNumber numberWithFloat:0.4];

    id obj = anyNSObject; //you can pass anything here as long as it is inherited from NSObject

    if ([obj isKindOfClass:[NSString class]]) {
        NSLog(@"This is string");
    }

    if ([obj isKindOfClass:[NSNumber class]]) {
        NSLog(@"This is NSNumber");

        if (strcmp([obj objCType], @encode(float)) == 0) {
            NSLog(@"this is a float");
        } else if (strcmp([obj objCType], @encode(int)) == 0) {
            NSLog(@"this is an int");
        }
    }
双var=4.1

if(ceil(var) == var){
      //Int value
    }else{
     //Float value
    }
(我假设您正在解析来自服务器的一些字符串,并在本地将其转换为int/float/string。)

客户机和服务器必须在某些规范上达成一致。例如,浮点必须带有小数点。或者结果还有一个字段来描述具体类型。因为无法从字符串值推断实际类型

更详细地说,如果您从服务器上看到“9.000”。您不知道它是int还是float。但如果你同意小数点的存在意味着浮点数。它将变成float,但不是int。您可以使用这个事实来创建解析器

(重要)此外,从字符串解析浮点通常有数字错误。如果服务器的浮点精度低于客户端,则客户端无法获得准确的浮点值。您应该将其解析为定点而不是浮点。

简单的方法是:

NSRange range = [yourString rangeOfString:@"."];

if (range.length > 0){
  NSLog(@"Double value");
}
else {
  NSLog(@"Integer value");
}
我就是这样做的

-(BOOL)是floatnumber:(NSNumber*)值{
如果([[value stringValue]包含字符串:@.”){
返回YES;
}
返回否;
}

您正在将字符串解析为整数/浮点/字符串吗?请添加有关如何从服务器获取此“值”的更多详细信息。添加来自服务器的值。虽然输入类型不清楚,但在大多数情况下应该可以这样做:)