2010-03-20 32 views
1

我做一個簡單的四捨五入:爲什麼漂浮在這家目標C /可可代碼

float x = 151.185436; 
printf("x=%f",x); 

,其結果是

X = 151.185440

請告訴我錯在這裏?我要保留並打印我原來的151.185436

謝謝值 Amarsh

+1

http://docs.sun.com/source/806-3568/ncg_goldberg.html – kennytm 2010-03-20 13:33:47

回答

0

浮動不準確,使用雙打。另外,作爲你使用Objective C和不直c。如果您使用Objective C的功能這一點,可能會更好:

myNumber = [NSNumber numberWithDouble:151.185436]; 
NSLog(@"myNumber = %@", myNumber); 
+1

花車和雙打都「不準確」 - 這只是一個學位問題。 – 2010-03-20 15:44:45

2

一個浮點只能容納約你的電話號碼信息的32位(4個字節) - 它不能只存儲您需要的小數位數。 151.18544與您的價值差不多,浮動可以表示沒有用完比特。

對於您想要的精度,您需要使用double而不是float。