在NSNumber中存储浮点数会产生奇怪的结果

时间:2015-02-07 21:38:29

标签: objective-c xcode floating-point type-conversion nsnumber

我在尝试将浮点值存储到NSNumber时遇到了奇怪的结果。它似乎没有正确存储(或正确打印)。我觉得这是一个愚蠢的错误,但我不知道我做错了什么。这是我的代码:

team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];
NSLog(@"%f", estimatedScoreSlider.value);
NSLog(@"%f", [team.nExpectedScore floatValue]);

其中nExpectedScoreteam类的合成属性,声明为:

@property (strong, nonatomic) NSNumber *nExpectedScore;

虽然我认为不重要,但是这个数字是在teaminit方法(明确称为)中初始化的:

nExpectedScore = [[NSNumber alloc] init];

此外,estimatedScoreSliderUISlider,范围从0到500。 完成所有这些后,两个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

我希望这两个数字相同。他们为什么不同?

1 个答案:

答案 0 :(得分:1)

团队怎么样?看来你的团队对象没有被初始化,因为你遇到了NSNumber的nil行为,看到0.00这是一个nil NSNumber的浮点值?

您需要先运行:

self.team = [[WhateverObject alloc]init];

然后您可以为其分配值,例如:

 team.nExpectedScore = [NSNumber numberWithFloat:estimatedScoreSlider.value];