NSNumberFormatterStyle

NSNumberFormatterStyle

当我使用nsnumberFormatterStyle.spellOutStyle来表示更大的数字(而不是溢出类型的数字)时,它似乎在中万亿中的某个地方崩溃了。

let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
print(formatter.stringFromNumber(50000000000000000))

产量:一千八百一十四万亿三千九百八十亿五亿九千四百八十一千九百八十四
这是怎么回事?一只虫子?或者我碰到了我不知道的极限?int直到2^63才溢出,它是64位有符号的int…但是数字格式化程序有一些限制在2^54?

最佳答案

我没有办法,但我猜:
nsnumberFormatter使用double存储值(53位),因此您的值太大。
我想它会使格式化程序生成一个错误的拼写,而不是以一条真正的错误消息失败:所以我会说是的,这是一个nsnumberFormatterStyle.spellOutStyle的错误,它不应该在失败时吐出一个假值。

关于swift - NSNumberFormatterStyle.SpellOutStyle中的错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35205450/

10-12 15:57