如何四舍五入到十分位?

给定任何类似于78.689或1.12的数字,我要将数字编程四舍五入到小数点后最近的十分位。

我试图在一个有math.floor()函数可以将数字向下取整到最低整数的环境中实现这个目标,但是我从文档中得知并没有类似于PHP的round()函数。

点赞
用户5675002
用户5675002

可以在 http://lua-users.org/wiki/SimpleRound 上找到一个简单的代码段:

function round(num, numDecimalPlaces)
  local mult = 10^(numDecimalPlaces or 0)
  return math.floor(num * mult + 0.5) / mult
end

如果 numDecimalPlaces 为负数,它可能会出现异常,但该页面中有更多的示例。

2017-01-08 14:57:14
用户2186463
用户2186463

在我的情况下,我只是试图制作这个数字的字符串表示形式... 然而,我想这个解决方案也可能对其他人有所帮助。

string.sub(tostring(percent * 100), 1, 4)

因此,要将它带回一个数值表示,你可以简单地在结果数字上调用 tonumber()

2017-01-08 14:57:59
用户7066323
用户7066323

你可以使用类型转换来实现这个... 它的工作方式就像 printf... 你可以尝试在下面的代码片段中类似这样做。

value = 8.9756354
print(string.format("%2.1f", value))
-- 输出:9.0
2017-01-08 15:01:39
用户7452073
用户7452073

考虑到这是 Roblox,将其设为全局变量比创建一个单独的模块或创建自己的 gloo 更容易。

_G.round = function(x, factor)
    local factor = (factor) and (10 ^ factor) or 0
    return math.floor((x + 0.5) * factor) / factor
end
2017-01-22 03:47:58