2016-05-26 73 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 –