1

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

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

4

1 回答 1

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;
}

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

clang floatTest.m -framework foundation -o floatTest

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

./floatTest

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

如果创建文件看起来很麻烦,您可能会喜欢这篇关于极简 Cocoa 编程的博文。

于 2011-02-11T04:37:11.477 回答