我想在1之后的1000中分隔,但是我得到了数字>=10000的分隔符,我是如何做到的:
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.string(for: myNumber)我得到的是:
(lldb) po formatter.string(for: 1000)
▿ Optional<String>
- some : "1000"
(lldb) po formatter.string(for: 10000)
▿ Optional<String>
- some : "10 000"为什么1000中没有分隔符?
发布于 2021-11-05 00:24:23
你问:
为什么1000中没有分隔符?
这种模式在只有四位数时省略分组分隔符,对于使用空格作为分隔符的语言来说并不少见。
正如数字分组的例外所说:
国际度量衡局指出,“当小数点之前或之后只有四位数时,通常不使用空格分隔一位数字”。
您将在几个使用空格作为分组分隔符的区域设置中看到此模式。
此格式基于设备的设置(由当前Locale表示)。您可以通过临时更改设备设置来测试其他区域设置中的其他用户的外观。
对于手动调整格式化程序的locale属性以获得所需的输出,我会非常谨慎:当然,为了诊断目的,您可能会这样做,但通常您不希望更改格式化程序的区域设置(除了需要某种不变格式的明显例外,例如,将结果存储在持久存储中或发送到服务器上)。
请始终使用设备的当前区域设置,以满足最终用户的数字格式设置要求。
发布于 2021-11-04 18:39:23
听起来,pl_PL语言环境在NumberFormatter中可能有一个bug。我建议向苹果报告这个问题。您可以在macOS上使用反馈助理应用程序。
您可以在技术上实现解决方案(硬编码区域设置或尝试自己格式化),但通常对所有用户强制使用特定格式并不是很好的做法。并且自己实现格式可能会成为一个空洞无物的边缘情况,并容易出错。
https://stackoverflow.com/questions/69843103
复制相似问题