当我将 NSNumberFormatterStyle.SpellOutStyle 用于较大的数字(不是溢出类型的数字)时,它似乎会在四万亿中的某个地方崩溃。
let formatter = NSNumberFormatter()
formatter.numberStyle = NSNumberFormatterStyle.SpellOutStyle
print(formatter.stringFromNumber(50000000000000000))
产出:十八万亿十四万亿三千九百八十亿五亿九百四十八万一千九百八十四
这里发生了什么?一个错误?或者我是否遇到了一些我不知道的限制? Int 直到 2^63 才会溢出,是 64 位有符号整数...但是数字格式化程序在 2^54 处有一些限制?
我没有解决方案,但我有一个猜测:
NSNumberFormatter 使用 Double 来存储值(53 位),因此您的值太大了。
我想它会让格式化程序生成错误的拼写,而不是失败并显示真正的错误消息:所以我会说yes,这是 NSNumberFormatterStyle.SpellOutStyle 的一个错误,失败时它不应该吐出虚拟值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)