使用Lua,我将数字格式化为可变数字位数并删除尾随零/小数点,如
string.format(" %."..precision.."f", value):
gsub("(%..-)0*$", "%1"):
gsub("%.$", "")
值的类型为数字(正数,负数,整数,小数)。
所以任务已经解决,但出于美学,教育和表现的原因,我有兴趣了解是否有更优雅的方法 - 可能只有一个gsub()
。
%g
中的{p> string.format()
是不可取的,因为要避免使用科学记数法。
答案 0 :(得分:1)
如果您的精确度始终是> 0,然后保证尾随字符是浮点数的0
或.
的序列,后跟整数的0
序列。因此,你可以识别并删除这个"预告片",留下其余字符串:
string.format(" %."..precision.."f", value)
:gsub("%.?0+$", "")
它赢得了以0结尾的整数整数,因为那些在重要的零之后会有浮动点,所以他们不会在字符串结尾之前被0
的序列捕获。
如果precision为0,那么你根本不应该执行gsub
。