S2.02.1Locale-specific decimal and grouping separators设计
小数点与千分位符号随地区互换
别名: 小数分隔符 · 数字分组符 · decimal separator
概念解释
地区化小数与分组符号(locale-specific decimal and grouping separators)是由 locale 规定数值中小数边界和整数分组使用何种字符。点、逗号、空格类字符在不同地区可承担不同角色,因此 1,234 可能表示一千二百三十四,也可能表示一点二三四。界面应保存数值本身,由格式化器输出;输入时则按明确 locale 解析,不能用全局字符替换猜测。
机制
读者依靠符号位置与本地习惯共同识别数量级。格式器会把数值模式、数字系统、小数符和分组符作为一套 locale 数据应用;手工将句点替换成逗号可能同时破坏分组、货币或非拉丁数字。解析比显示更危险:在错误 locale 下,解析器可能把逗号当作可忽略分组符,将 1,5 变成 15。解析接口因此必须显式指定 locale 并确认完整输入被消费;字符等价与严格程度属于输入策略。
边界
程序源代码、数据库和 API 可以规定与 locale 无关的机器语法,但用户输入框不应把该内部协议冒充本地格式。科学数据、金融终端或跨国团队也可能采用明确行业约定;关键是界面清楚说明并一致解析。分隔符地区化不能解决精度、舍入、单位或货币含义。
怎么落地
- 数据层使用数值类型,显示层调用 locale-aware 数字格式器;不要把已格式化字符串参与计算或排序。
- 分别检查 decimal 与 group 符号在目标 locale 和数字系统中的实际字符;若货币使用专属
currencyDecimal或currencyGroup,交给货币格式器处理。 - 任何反向解析都必须带明确 locale、要求完整消费输入并拒绝未解释的残余字符;宽松、严格与回显策略由数字输入契约决定。
- 在界面与导出样例中核对数量级、辅助技术朗读和复制后的字符,避免视觉相似符号掩盖错误数值。