2013-04-08 165 views
1
float abc = 20130401.0f; 
NSLog(@"abc = %f",abc); 

結果:我遇到有關float.Help麻煩我

2013年4月8日15:47:38.963 CCLearnIphone [5034:C07] ABC = 20130400.000000

這是同樣使用雙。

如何表示八位數字?

我知道精度會丟失,但是.000000不應該是1.0000000。

%F應該是0.9xxxxx等

爲什麼它0.000000四捨五入爲1.000000?

+0

的末尾刪除「F」字你要多少位? – Pratik 2013-04-08 08:48:37

+0

如果您需要更高的精度,請使用'double'。你可以在這裏看到類似的答案:http://stackoverflow.com/questions/5098558/float-vs-double-precision – Alladinian 2013-04-08 08:49:25

+0

使用NSLog(@「abc =%.2f」,abc);你會得到20130400.00 – Pratik 2013-04-08 08:50:58

回答

-1

爲什麼它0.000000四捨五入爲1.000000?

情況並非如此。 20130401四捨五入到20130400,因爲20130400是float可表示的最接近的值。

+0

爲什麼'浮動ABC = 19999991',打印到19999992.任何硬性和快速的規則,以便沒有計算機,我們可以告訴結果? – 2013-04-08 09:02:42

+0

@AnoopVaidya如果沒有計算指數和尾數,很難判斷某個值是否可以用浮點類型精確表示。最簡單的經驗法則是:少於7個十進制數字。 – 2013-04-08 09:06:45

+0

下面是一個IEEE 754轉換器,顯示任何輸入數字的二進制和十進制表示形式:http://www.h-schmidt.net/FloatConverter/ – 2013-04-08 09:09:55

0

你的電話號碼是一個浮動的VAR太HIGHT所以你必須改變它像雙和小數點後您的號碼

double abc = 20130401.0; 
NSLog(@"abc = %f",abc);