剥离尾随零和小数点

时间:2014-07-11 12:33:45

标签: lua string-formatting

使用Lua,我将数字格式化为可变数字位数并删除尾随零/小数点,如

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

值的类型为数字(正数,负数,整数,小数)。

所以任务已经解决,但出于美学,教育和表现的原因,我有兴趣了解是否有更优雅的方法 - 可能只有一个gsub()

%g中的{p> string.format()是不可取的,因为要避免使用科学记数法。

1 个答案:

答案 0 :(得分:1)

如果您的精确度始终是> 0,然后保证尾随字符是浮点数的0.的序列,后跟整数的0序列。因此,你可以识别并删除这个"预告片",留下其余字符串:

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

它赢得了以0结尾的整数整数,因为那些在重要的零之后会有浮动点,所以他们不会在字符串结尾之前被0的序列捕获。

如果precision为0,那么你根本不应该执行gsub