帮助:解析函数/formatnum
formatnum是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。
formatnum
数字格式本地化。MediaWiki原生支持。
根据Wiki语言配置,将数字格式本地化。比如对于孟加拉语Wiki {{formatnum:3}}
→ ৩
语法
{{formatnum: 数字 | 选项 }}
参数
数字
:需要本地化的数字,支持小数选项
:(可选)- R - 还原为原始数字,移除分隔符。
- NOSEP - 数字本地化时,不包含分隔符(对于中英语言无用)。
数字的格式需要符合Wiki平台所设置语言的标准才能获得正确结果。因此对于站点语言为中文的BWiki,此解析函数的作用仅剩下增加/移除逗号分隔符(千分撇)。
示例
- 基本
{{formatnum: 0012345.67890 }}
→ 0,012,345.67890 - 还原
{{formatnum: 12,345.678 | R }}
→ 12345.678 - 小数
{{formatnum: .678 }}
→ .678 - 无作用
{{formatnum: 12,345.678 | NOSEP }}
→ 12,345.678
对于设为孟加拉语的Wiki:
{{formatnum:987654321.654321}}
→৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১
{{formatnum:৯৮,৭৬,৫৪,৩২১.৬৫৪৩২১ |R}}
→987654321.654321
{{formatnum:987654321.654321 |NOSEP}}
→৯৮৭৬৫৪৩২১.৬৫৪৩২১
(没有逗号分隔符)
数字分节
各国使用的数字分节符和小数点符号种类繁多。比如大部分欧洲国家及其前殖民地,使用点分节,逗号做小数点,如123.456,789
。
在MW1.37源码中,有约80种语言的分隔符不用逗号,或小数点不用点。其中约40种语言使用空格作为分隔符。
在中国,相关国家标准是《出版物上数字用法》。现行标准中对多位阿拉伯数字的使用有相关描述,大意为:
为了便于阅读,四位以上的整数和小数可以采用千分撇和千分空两种方式分节。
千分撇
:整数部分每三位一组,以“,”分节。小数部分不分节。四位以内的整数可以不分节。如:624,000
、92,300,000
和1256
千分空
:从小数点起,向左和向右每三位数字一组,组间空四分之一个汉字,即二分之一个阿拉伯数字的位置。四位以内的整数可以不加千分空。如:55 234 367.346 23
和98 235 358.238 368
各科学技术领域,遵循《有关量、单位和符号的一般原则》:为使多位数字便于阅读,可将数字分成组,从小数点,起向左和向右每三位分成一组,组间留一空隙,但不得用逗号、圆点或其他方式。
底层代码
- 代码逻辑:
- 根据格式参数选择格式化方法
R
参数(由rawsuffix匹配),将本地化的数字字符串解析为标准的数字字符串。NOSEP
参数(由nocommafysuffix匹配),将数字字符串本地化,移除分隔符。- 默认:将数字字符串本地化,输出包括分隔符。
- 虽然调用的函数不同,但其行为一致:处理特殊值、翻译数字,识别并处理分隔符。
实际用例
- 一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时,仅供批判性参考。