如果
NSString sample = @"1sa34hjh#@";
Float 64 floatsample = [sample floatValue];
会发生什么? floatsample包含什么?
答案 0 :(得分:5)
返回值
接收者文本的浮点值为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上的这篇博文。