objective-c float型变量传值问题

Written by mc on November 22, 2010 Categories: 小心有电

最近做一个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的血逼, 这么低级的错误居然持续多年

No Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>