在方法之间传递时,float会变坏(类型转换问题?)

时间:2010-01-09 20:39:25

标签: iphone objective-c cocoa floating-point casting

我无法将浮点值从一个对象传递到另一个对象。它在第一种方法中看起来很好,但在第二种方法中它的价值很大。我认为这是我的类型转换的某种问题,因为这是我理解最穷的东西。非常感谢帮助!

在我的游戏控制器中,我这样做:

float accuracy = (float)hitCount/(float)(hitCount+missCount);
NSLog(@"GameController - hits: %i misses: %i enemies: %i accuracy: %f", hitCount, missCount, escapedCount, accuracy);
[delegate postGameWithScore:roundScore andAccuracy:accuracy];

在游戏控制器的委托中调用此方法:

-(void)postGameWithScore:(NSInteger)score andAccuracy:(float)accuracy {
    cumulativeScore += score;
    NSLog(@"GameMaster - score: %i accuracy %f",cumulativeScore, accuracy);
    /* non relevant code clipped */
}

输出:

GameController - hits: 14 misses: 54 enemies: 35 accuracy: 0.205882
GameMaster - score: 3800 accuracy 36893488147419103232.000000

我无法弄清楚为什么accuracy在第二个NSLog中不正确。

1 个答案:

答案 0 :(得分:1)

!!解决了它。

将此添加到我的委托的标题中修复它:

-(void)postGameWithScore:(NSInteger)score andAccuracy:(float)accuracy;

不知道为什么要修复它,但这会教我将编译器警告视为警告而不是错误。