E2.19.3locale-dependent numeric punctuation设计研究

千分位与小数点符号因地区而异,格式需自适应

别名: 千分位逗号 · decimal comma · 1.234 · 56

概念解释

有的地区用逗号做小数点、用点或空格做千分位(1.234,56),有的相反(1,234.56)。同一串字符在两种惯例里相差三个数量级。数字标点随地区(locale-dependent numeric punctuation)要求解析和展示跟用户的惯例走,而不是按开发者的键盘。它管的是逗号和点的角色,不是币种,也不是公英制。

机制

人把「1,234」读成一千二百三十四或一点二三四,取决于从小看账单的方式。解析器若写死「逗号是千分位」,欧洲用户输入的 3,5 公斤会变成 35 或被拒。展示若写死美式,欧洲用户会把 1,234.00 当成一点二。复制粘贴跨地区时,源文档的标点会进槽,解析必须容忍两种,或在失焦时用用户可见的规范化写回,让人看见系统理解成了哪个数。键盘上的小数键在某些布局出逗号,硬拦「只许点」等于不让人用数字小键盘。

怎么研究

招募使用不同数字惯例的人,输入带小数的金额或重量,比较解析值与意图。自变量:槽是否跟 Intl 地区走、是否同时接受两种标点、失焦是否重排。因变量:数量级错误、被拒率。把 1.2341,234 都列入刺激。不要只在开发者本机地区测。日志里刚好 10 或 1000 倍的金额是标点错误的线索。

边界

账号、订单号、版本号里的点不是小数点,不能当数字来本地化。程序配置、API 调试面向开发者时,固定用一种计算机小数点更安全。同一表单里混用「跟随浏览器语言」和「跟随账户地区」会让两个槽解析规则不同。残障用户的读屏器也按地区读「comma」或「point」,展示与解析不一致时听觉通道会报一个与提交不同的数。

怎么落地

  • 解析与展示跟随用户地区:小数点和分组符用该地区的角色。
  • 失焦后把值写成该地区的规范形式,使人看见系统理解的数。
  • 允许数字键盘产出的逗号或点作为小数点,不要只接受 ASCII 点。
  • 验证:用逗号小数惯例输入 3,5,看存储是不是三点五。再用点千分位输入 1.234,看是不是一千二百三十四。任一数量级翻错,标点角色就还写死在开发者键盘上。

延伸

  • 同组E2.19.1 货币输入需明确币种,不能让用户默认假设当前货币 · E2.19.2 单位输入需支持用户熟悉的计量制式并可换算 · E2.19.4 数值与单位的耦合错误在提交前难以被用户察觉
  • 相邻E2.07 输入掩码 · E2.08 字数限制
  • 站内检索locale-dependent numeric punctuation · decimal comma · grouping separator

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/E2.19.3