剥去尾部的零和小数点。

用 Lua 我可以将数字格式化为变长的数字并去除尾部的零和小数点,方法如下:

string.format(" %."..precision.."f", value):
  gsub("(%..-)0*$", "%1"):
  gsub("%.$", "")

数值类型为 number(正数、负数、整数、分数)。

所以问题已经解决了,但出于美观、教育和性能方面的原因,我想学习是否有更优雅的方法 - 可能只使用一个 gsub()

string.format() 中的 %g 不适用,因为要避免科学计数法。

点赞
用户936986
用户936986

如果您的精度始终> 0,则浮点数的末尾字符将保证是“0”序列,整数的末尾字符将保证是“.”后跟“0”序列。因此,您可以识别和剥离此“尾随”,留下字符串的其余部分:

string.format(" %."..precision.."f", value)
   :gsub("%.?0+$", "")

它不会损坏以0结尾的整数,因为它们会在重要的0后面有浮点数,因此它们不会被识别为“字符串末尾的0序列”。

如果精度为0,则根本不应执行gsub

2014-09-15 17:52:06