【问题标题】:Something goes wrong when I convert NSString to float当我将 NSString 转换为 float 时出现问题
【发布时间】:2016-01-24 20:14:06
【问题描述】:

当我将 NSString 转换为浮点数时出现问题。我得到了零值,但为什么呢?

NSString *polylineStr = @"51.351305,-0.024239;51.374855,-0.092412";
NSArray *strPolylineArr = [polylineStr componentsSeparatedByString:@";"];
for ( NSString *str in strPolylineArr) {

    NSArray *arr = [str componentsSeparatedByString:@","];
    NSString *firstString = [arr firstObject];
    NSLog(@"__str %@ float %f", [arr firstObject], [firstString floatValue]);
}

我的输出是

__str 51.351305 float 0.000000
__str 51.374855 float 51.374855

我发现第一个字符串有问题。

【问题讨论】:

  • 查看这个答案。第一个字符串中可能有额外的字符。可能是 \x stackoverflow.com/questions/11624900/…
  • 当我将您的代码复制粘贴到记事本中时,我在 51 和 39 的前面看到一个额外的字符。当我将粘贴复制到 cmets 时,它不会显示。检查您是否得到相同的结果,这可能是 floatvalue 返回 0 的原因
  • Yan,是的,我需要删除多余的字符,例如 replaceOccurrencesOfString:@"\x10" withString:@""
  • 删除 "\x10" 或使用以下代码

标签: ios floating-point nsstring type-conversion


【解决方案1】:

HI 在你的字符串中添加一些字符:'' 你看不到但复制单引号上的字符或使用下面的代码:

NSString *polylineStr = [NSString stringWithFormat:@"51.351305,-0.024239;51.374855,-0.092412"];
    NSArray *strPolylineArr = [polylineStr componentsSeparatedByString:@";"];
    for ( NSString *str in strPolylineArr) {

        NSArray *arr = [str componentsSeparatedByString:@","];
        NSString *firstString = [arr firstObject];
        NSLog(@"__str %@ float %f", [arr firstObject], [firstString floatValue]);
    }  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 2012-08-10
    • 2011-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多