Lua 如何用零填充数字的小数位?

Lua 如何用零填充数字的小数位?,lua,decimal-point,Lua,Decimal Point,假设以下数字: local a = 2 local b = 3.1 local c = 1.43 local d = 1.0582 我的目标是把这些数字四舍五入到小数点后两位。结果应分别为: a = 2.00 b = 3.10 c = 1.43 d = 1.06 or 1.05 显然,我知道任何带有小数点后零的数字都会被四舍五入。2点是2点。但是我需要数字作为字符串,为了让它看起来更吸引人,我需要这两个小数位 下面是一个函数,我使用它将小数点后两位四舍五入: function round(n

假设以下数字:

local a = 2
local b = 3.1
local c = 1.43
local d = 1.0582
我的目标是把这些数字四舍五入到小数点后两位。结果应分别为:

a = 2.00
b = 3.10
c = 1.43
d = 1.06 or 1.05
显然,我知道任何带有小数点后零的数字都会被四舍五入。2点是2点。但是我需要数字作为字符串,为了让它看起来更吸引人,我需要这两个小数位

下面是一个函数,我使用它将小数点后两位四舍五入:

function round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)
return math.floor(num * mult + 0.5) / mult
end
这对于测试用例c和d来说很好,但是对于a和b会产生错误的结果:它不会填满零。我理解这是因为舍入函数接受数字并计算它们-因此多余的零被截断

但这并不是我的目标——不切断它们

我尝试了字符串操作,通过检查。是一个数字,但无论如何,这根本不起作用。我的方法:

local zei
if i < 100 then
    if tostring(i):find("%.") == nil then
        zei = round(i, 2) .. ".00" --No decimal point found, append .00
    else
        zei = round(i, 2) --Found decimal point, round to 2
    end
    if tostring(i):find("%.")+2 == tostring(i):len() then
        zei = round(i, 2) .. "0" --Found point, but only one trailing number, append 0
    end
else
    zei = round(i, 0) --Number is over 100, no decimal points needed
end
以上100个案例只是为了美观,与此处无关。其中zei是显示的字符串,i是测试用例号之一

总结 我如何将一个数字舍入到小数点后两位,但附加尾随的零,即使它们是多余的,例如2.30?我知道我需要字符串


你不会对数字进行四舍五入。您可以创建这些数字的字符串表示形式。这将通过string.format和适当的格式来完成。像这样:

string.format("%.2f", a);

你不会对数字进行四舍五入。您可以创建这些数字的字符串表示形式。这将通过string.format和适当的格式来完成。像这样:

string.format("%.2f", a);