2016-05-26 44 views
0

1)定义大NSInteger的
2)投射到浮动
3)日志浮动
4)每当变为稍小号???
铸造大NSInteger的浮动问题

NSInteger val = 485935336; 
float val_float = (float)val; 
NSLog(@"%f", val_float); //logs 485935328, not 485935336 

任何线索,为什么?

回答

4

任何想法为什么?当然。浮点数约为六位数的精度。 double有15位精度,这就是为什么你应该总是使用双精度,除非你可以给出一个很好的理由。你会得到同样的问题,但只有当数字更大时。

+0

对不起,我的代码与其中的专有信息做了一些不同的事情,当我在这里发布信息时,我很快用@(485935336)替换了它,并点击“发布”,我将使用double,看看我能否获得这工作:D –