2010-12-01 7 views
0

次の出力が表示されています。結果の数字は1だけオフになります。NSNumberに問題があります(二重の値が1だけ外れています)

私は倍数で膨大な数を扱うことができると思いましたか?私は何かを正しく理解していないと確信しています!どんな助けでも大歓迎です。

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

多くの感謝!

答えて

4

倍精度浮動小数点型の精度は使い尽くされていますが、これは10進表記で約14桁の数字の余裕があります。

+1

これ以上の精度が必要な場合は、NSDecimalNumberを使用します。 –

+0

ああ...大丈夫です!だから、私はおそらく長さの長い符号なしに移動する必要があります! –

+0

はい、それは約180E18(2 ** 64)に達するまで機能します。 –

関連する問題