2014-07-10 117 views
-2

如果我創建了一個NSNumber,其值爲0.085的雙倍值,似乎會在該數字中增加精度。但是,0.85並非如此。我不明白爲什麼會這樣,但我確信有一個非常明顯的答案。有誰知道爲什麼?浮點數不精確

例如:

NSNumber *n1 = [NSNumber numberWithDouble:0.85]; 
NSNumber *n2 = [NSNumber numberWithDouble:0.085]; 

NSLog(@"Number: %@", n1);  // Number: 0.85 
NSLog(@"Number: %@", n2);  // Number: 0.08500000000000001 
+3

http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html –

+0

@HotLicks這個問題沒有什麼錯,也沒有要求有人必須知道整個發佈問題前的語言。 –

+0

@AirsourceLtd - 也許不是,但他應該在他提問時輸入了20個左右的「提問問題」頁面中的一個。 –

回答

3

這與double而非NSNumberdouble是一個floating-point number值,並且它不提供特定級別的精確小數點編號,通過設計