2013-02-11 49 views
0

我試圖將double的值轉換爲int,我得到了不同的值。意外的結果轉換爲int的兩倍

我有這樣的代碼:

double double100times = 240; 
int a=[[NSNumber numberWithDouble:double100times] intValue]; 

和價值,我從這個a=239得到。

如果我使用int a= (int)double100times,我會得到相同的值。

這是爲什麼?

更新:如果我使用double double100times = 240;作品, 但我使用:

double double100times = (2.3*100)+10; 
+0

查找IEEE浮點維基百科的文章和研究它,尤其是一部分,他們解釋說,最值沒有一個確切的浮點表示。 – 2013-02-11 12:55:58

回答

0

我想這個代碼

double double100times = 240; 
    int a=[[NSNumber numberWithDouble:double100times] intValue]; 
    NSLog(@"Integer : %d",a); 

它導致我

整數:240

確定,檢查你的日誌再次..

編輯: -

一種解決方法解決方案..

double double100times = ((2.3*100)+10); 
    NSLog(@"Value : %f",double100times); 
    int a=[[NSNumber numberWithDouble:double100times] intValue]; 
    int b = [[NSString stringWithFormat:@"%f",double100times] intValue]; 
    NSLog(@"Integer : %d",a); 
    NSLog(@"Integer : %d",b); 
+0

如果我這樣做,我實際上得到了良好的價值。問題是,當我得到的價值,我真正的代碼是這樣的。 double double100times =(2.3 * 100)+10; int intValue = [[NSNumber numberWithDouble:double100times] intValue]; 以某種方式工作時,我寫240,但當我使用(2.3 * 100)+10;而不是工作.. – user2061250 2013-02-11 12:50:26

+0

@ user2061250檢查我編輯的答案.. – 2013-02-11 13:01:29