首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斯威夫特NumberFormatter只为千人服务

斯威夫特NumberFormatter只为千人服务
EN

Stack Overflow用户
提问于 2021-11-04 16:59:57
回答 2查看 396关注 0票数 2

我想在1之后的1000中分隔,但是我得到了数字>=10000的分隔符,我是如何做到的:

代码语言:javascript
复制
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.string(for: myNumber)

我得到的是:

代码语言:javascript
复制
(lldb) po formatter.string(for: 1000)
▿ Optional<String>
  - some : "1000"

(lldb) po formatter.string(for: 10000)
▿ Optional<String>
  - some : "10 000"

为什么1000中没有分隔符?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-05 00:24:23

你问:

为什么1000中没有分隔符?

这种模式在只有四位数时省略分组分隔符,对于使用空格作为分隔符的语言来说并不少见。

正如数字分组的例外所说:

国际度量衡局指出,“当小数点之前或之后只有四位数时,通常不使用空格分隔一位数字”。

您将在几个使用空格作为分组分隔符的区域设置中看到此模式。

此格式基于设备的设置(由当前Locale表示)。您可以通过临时更改设备设置来测试其他区域设置中的其他用户的外观。

对于手动调整格式化程序的locale属性以获得所需的输出,我会非常谨慎:当然,为了诊断目的,您可能会这样做,但通常您不希望更改格式化程序的区域设置(除了需要某种不变格式的明显例外,例如,将结果存储在持久存储中或发送到服务器上)。

请始终使用设备的当前区域设置,以满足最终用户的数字格式设置要求。

票数 2
EN

Stack Overflow用户

发布于 2021-11-04 18:39:23

听起来,pl_PL语言环境在NumberFormatter中可能有一个bug。我建议向苹果报告这个问题。您可以在macOS上使用反馈助理应用程序。

您可以在技术上实现解决方案(硬编码区域设置或尝试自己格式化),但通常对所有用户强制使用特定格式并不是很好的做法。并且自己实现格式可能会成为一个空洞无物的边缘情况,并容易出错。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69843103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档