我正在處理來自JSON源的大型64位無符號整數,這些JSON源被解析爲NSDecimalNumbers,這顯然是「忠實地表示任意精度數字」。NSDecimalNumber和大的無符號long long(64位)整數
我遇到的問題是我不能從這個類中得到正確的數字。例如(使用最大可能值):
print (unsigned long long) [[NSDecimalNumber decimalNumberWithString:@"18446744073709551615"] unsignedLongLongValue]
= 0 // Incorrect
print (unsigned long long) [[NSDecimalNumber decimalNumberWithString:@"9223372036854775808"] unsignedLongLongValue]
= 9223372036854775808 // Correct
print (unsigned long long) [[NSDecimalNumber decimalNumberWithString:@"9223372036854775810"] unsignedLongLongValue]
= 9223372036854775808 // Incorrect
這樣看來,我不能得到任何比符號long long值出NSDecimalNumber的最大大。但是似乎號被存儲在一個NSDecimalNumber內全精度它不喜歡比9223372036854775808.較大的值,如:
po [[NSDecimalNumber decimalNumberWithString:@"18446744073709551615"] stringValue]
= 18446744073709551615
我注意到,NSNumber的對象可以處理這些大量的罰款和unsignedLongLongValue作品正確。這只是NSDecimalNumbers(我堅持)哪些不起作用。
如何從NSDecimalNumbers中得到正確的無符號long long值?或者至少將它們轉換爲unsignedLongLongValue工作的NSNumber對象。
我不知道問題是否在iOS 5中的NSJSONSerialization類仍然存在不正確的值? – adib
我沒有意識到這一點在iOS 5中,我會檢查出來 - 謝謝! –
它完全堅持在iOS 5的NSJSONSerialization! o_O –