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

Nam*_*tha 1 floating-point alphanumeric type-conversion nsstring ios

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

怎么了?floatsample包含什么?

Anu*_*rag 6

阅读文档.

回报价值

接收者文本的浮点值为浮点数,在字符串的开头跳过空格.溢出时返回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;
}
Run Code Online (Sandbox Code Playgroud)

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

clang floatTest.m -framework foundation -o floatTest
Run Code Online (Sandbox Code Playgroud)

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

./floatTest
Run Code Online (Sandbox Code Playgroud)

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

如果创建文件似乎很麻烦,你可能会喜欢这篇关于极简主义Cocoa编程的博文.