最近做一个objective-c的程序发现这样的问题将一个float值传给某函数时会出现驴唇不对马嘴的问题.
例如下
float myFloat = 3.3;
NSLog(@"myFloat %f", myFloat); [self testFloat:myFloat]; - (void) testFloat:(float)myFloat { NSLog(@"testFloat %f", myFloat); }This code prints
myFloat 3.300000
testFloat 36893488147419103232.000000
对于这段程序的解决方案是在float myFloat = 3.3的3.3后加f, 改为float myFloat = 3.3f;
如果是非常量的复制请全部使用double.
问题原因可能是apple这帮人将32bit系统升级为64时十分生硬没有全盘考虑.
最后操cocoa的血逼, 这么低级的错误居然持续多年