NSString浮动...如果NSString不是数字并包含字母数字字符会发生什么?

时间:2011-02-11 04:33:07

标签: ios nsstring floating-point type-conversion alphanumeric

如果 NSString sample = @"1sa34hjh#@";
Float 64 floatsample = [sample floatValue];

会发生什么? floatsample包含什么?

1 个答案:

答案 0 :(得分:5)

阅读documentation

返回值

接收者文本的浮点值为float,跳过字符串开头的空格。溢出时返回HUGE_VAL或-HUGE_VAL,下溢时返回0.0。

如果接收方不以以浮点数的有效文本表示开头,也会返回 0.0

找出返回值的最佳方法是自己检查返回值。您可以创建一个小程序并将其另存为扩展名为.m的文件。这是一个示例:

// floatTest.m
#import <Foundation/Foundation.h>

int main() {
    NSString *sample = @"1sa34hjh#@";
    float floatsample = [sample floatValue];
    printf("%f", floatsample);
    return 0;
}

使用clang并使用Foundation框架链接在命令行上编译它。

clang floatTest.m -framework foundation -o floatTest

然后运行可执行文件并查看输出。

./floatTest

打印值为1.000000。所以要回答你的问题,如果字符串以数字开头,那么字符串的数字部分将被采用并转换为浮点数。与上述相同的规则适用于上溢或下溢。

如果创建文件似乎很麻烦,您可能会喜欢minimalist Cocoa programming上的这篇博文。