在 NSNumber 中存储浮点数会产生奇怪的结果
Storing float in NSNumber gives weird results
我在尝试将浮点值存储到 NSNumber 时遇到奇怪的结果。它似乎没有正确存储(或正确打印)。我觉得这是一个愚蠢的错误,但我不知道我做错了什么。这是我的代码:
team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];
NSLog(@"%f", estimatedScoreSlider.value);
NSLog(@"%f", [team.nExpectedScore floatValue]);
其中 nExpectedScore
是 team
class 的合成 属性,声明如下:
@property (strong, nonatomic) NSNumber *nExpectedScore;
虽然我觉得无所谓,但是数字是在team
classinit
方法中初始化的(肯定是调用的):
nExpectedScore = [[NSNumber alloc] init];
此外,estimatedScoreSlider
是一个范围从 0 到 500 的 UISlider
。
综上所述,两个 NSLog
语句使用随机滑块位置打印以下内容:
2015-02-07 15:32:43.442 APP_NAME[3013:126937] 213.474030
2015-02-07 15:32:43.442 APP_NAME[3013:126937] 0.000000
我希望这两个数字相同。它们为什么不同?
团队呢?您的团队对象似乎未初始化,因为您正在经历 NSNumber 的 nil 行为,通过查看 0.00 这是 nil NSNumber 的浮点值?
你需要先运行:
self.team = [[WhateverObject alloc]init];
然后您可以为其属性赋值,例如:
team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];
我在尝试将浮点值存储到 NSNumber 时遇到奇怪的结果。它似乎没有正确存储(或正确打印)。我觉得这是一个愚蠢的错误,但我不知道我做错了什么。这是我的代码:
team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];
NSLog(@"%f", estimatedScoreSlider.value);
NSLog(@"%f", [team.nExpectedScore floatValue]);
其中 nExpectedScore
是 team
class 的合成 属性,声明如下:
@property (strong, nonatomic) NSNumber *nExpectedScore;
虽然我觉得无所谓,但是数字是在team
classinit
方法中初始化的(肯定是调用的):
nExpectedScore = [[NSNumber alloc] init];
此外,estimatedScoreSlider
是一个范围从 0 到 500 的 UISlider
。
综上所述,两个 NSLog
语句使用随机滑块位置打印以下内容:
2015-02-07 15:32:43.442 APP_NAME[3013:126937] 213.474030
2015-02-07 15:32:43.442 APP_NAME[3013:126937] 0.000000
我希望这两个数字相同。它们为什么不同?
团队呢?您的团队对象似乎未初始化,因为您正在经历 NSNumber 的 nil 行为,通过查看 0.00 这是 nil NSNumber 的浮点值?
你需要先运行:
self.team = [[WhateverObject alloc]init];
然后您可以为其属性赋值,例如:
team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];