Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在方法之间传递时,float被损坏(类型转换问题?)_Iphone_Objective C_Cocoa_Floating Point_Casting - Fatal编程技术网

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

Iphone 在方法之间传递时,float被损坏(类型转换问题?),iphone,objective-c,cocoa,floating-point,casting,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, m

我无法将浮点值从一个对象传递到另一个对象。在第一种方法中它看起来不错,但在第二种方法中它的价值是巨大的。我想这是我打字的一个问题,因为这是我最了解的事情。非常感谢您的帮助

在我的游戏控制器中,我执行以下操作:

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
我不明白为什么第二个NSLog中的
准确性
不正确。

!!解决了

将此添加到我的代理标题中修复了它:

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

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

如果不指定标头,则所有值都将作为整数传递(但由于某种原因,它将变为0x60000000)。将其转换为
float
表示会产生垃圾(3.68935e+19)。把它打开。当你这么做的时候,这里有一些你应该打开的警告: