2010-12-01 5 views
0

Ich bekomme die folgende Ausgabe und ich habe keine Ahnung warum !? Die resultierende Zahl ist um 1.Problem mit NSNumber (doppelte Werte sind um 1)

Ich dachte, dass Doppel kann mit massiven Zahlen umgehen? Ich bin sicher, ich verstehe etwas nicht richtig! Jede Hilfe würde sehr geschätzt werden.

(gdb) print (double) [[NSNumber numberWithDouble:9606977671929857.0] doubleValue] 
$13 = 9606977671929856 

Vielen Dank!

Antwort

4

Sie haben die Genauigkeit des Fließkomma-Typs mit doppelter Genauigkeit, der nur Platz für etwa 14 signifikante Stellen in Dezimalschreibweise bietet, ausgeschöpft.

+1

Wenn Sie eine höhere Genauigkeit benötigen, verwenden Sie 'NSDecimalNumber'. –

+0

Ah ... richtig gut! Also sollte ich wohl lange zu unsigned übergehen! –

+0

Ja, das würde funktionieren, bis Sie etwa 180E18 (2 ** 64) erreichen. –