当我使用NSNumberFormatterStyle.SpellOutStyle获取更大的数字(而不是溢出该类型的数字)时,它似乎在四分之一的中间位置分解。
let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
print(formatter.stringFromNumber(50000000000000000))
产出:十八亿四十四亿三千九百八十五亿五百万四百八十一万九百八十四
这里发生了什么?一个bug?或者我碰到了一些我不知道的限制? Int不会溢出直到2 ^ 63,是64位有符号整数...但数字格式化程序有一些限制在2 ^ 54?
答案 0 :(得分:1)
我没有解决方案,但我有一个猜测:
NSNumberFormatter使用Double来存储值(53位),因此您的值太大了。
我想这会让格式化程序生成错误的拼写而不是失败并显示真正的错误消息:所以我说是,它是NSNumberFormatterStyle.SpellOutStyle的一个错误,它失败时不应吐出虚拟值。