format_number 是 QGIS 表达式中一个非常实用的函数,用于将数字格式化为易读的字符串形式。它不仅能控制小数位数,还能根据语言环境自动添加千位分隔符,并提供多种可选参数来满足不同显示需求。
函数语法
format_number(number, [places=0], [language], [omit_group_separators=false], [trim_trailing_zeroes=false])
注:所有带 [] 的参数都是可选参数
number:(必填)要格式化的数值,可以是字段、表达式结果或直接输入的数字。支持整数和浮点数。
places:(可选)指定保留的小数位数,默认为 0(即不保留小数)。会进行四舍五入处理。
language:(可选)使用指定语言环境(locale)来格式化数字。例如 'en'(英语)、'fr'(法语)、'de'(德语)等 ISO 639 语言代码。影响千位分隔符和小数点符号。
omit_group_separators:(可选)布尔值,默认 false。若设为 true,则不显示千位分隔符(如逗号、空格等)。
trim_trailing_zeroes:(可选)布尔值,默认 false。若设为 true,则去除末尾多余的零(如 2.500 变成 2.5)。
使用示例
假设我们有一个字段X,其值为 1234567.8964,以下是各种用法示例:
示例 1:保留 2 位小数(默认语言)
format_number(1234567.8964, 2)
→ 若系统语言为英文:"1,234,567.89"
→ 四舍五入到两位小数。
示例 2:保留 3 位小数,使用法语格式
format_number(1234567.8964, 3, 'fr')
→ "1 234 567,900"
注意:
千位分隔符是空格
小数点是逗号
保留三位并补零
示例 3:无千位分隔符,保留 1 位小数
format_number(1234567.8964, 1, '', true)
→ "1234567.9"
去掉了千位分隔符(第三个参数留空表示默认语言,第四个设为 true)
示例 4:去掉末尾多余的零
format_number(2.500, 3, '', false, true)
→ "2.5"
虽然指定了 3 位小数,但由于启用了 trim_trailing_zeroes=true,所以去除了 .500 中的两个零。
⚠️ 注意:一旦启用 trim_trailing_zeroes,即使你设置了 places=3,也不会强制显示三位。
示例 5:结合字段使用(实际场景)
format_number(to_real("X") * 0.0015, 3)
解释:
to_real("X"):将字符串字段转换为实数
- 0.0015:乘以比例因子
format_number(..., 3):格式化为保留三位小数的字符串
👉 结果如:"X" = "1000" → 显示为 "1.500"
拓展:
若字段为空(NULL),结果也会是 NULL,可用 coalesce() 防错:
format_number(coalesce(to_real("X"), 0) * 0.0015, 3)
更多QGIS使用问题,欢迎留言或联系我们。转载须注明出处。