Étant donné un numéro du type 78.689 ou 1.12 par exemple, ce que je cherche est d'arrondir par programme le nombre à la dixième place après la virgule. J'essaye de faire ceci dans un environnement où il y a une fonction math.floor()
qui arrondit au nombre entier le plus bas, et autant que je peux dire de la documentation il n'y a rien comme la fonction round()
de PHP.Comment arrondir au dixième le plus proche?
Répondre
Il y a simplement extrait à: 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
Il se conduisent mal quand numDecimalPlaces est négatif, mais il y a d'autres exemples sur cette page.
Dans mon cas, j'essayais simplement de faire une représentation sous forme de chaîne de ce nombre ... cependant, j'imagine que cette solution pourrait aussi être utile aux autres.
string.sub(tostring(percent * 100), 1, 4)
afin de le ramener à une représentation numérique, vous pouvez simplement appeler tonumber()
sur le nombre résultant.
Vous pouvez utiliser la coercition pour cela ... Cela fonctionne comme printf ... Vous pouvez essayer de faire quelque chose comme dans cet extrait.
value = 8.9756354
print(string.format("%2.1f", value))
-- output: 9.0
Considérant que ce roblox, il serait tout simplement plus facile de faire une variable globale au lieu de faire un seul module ou créer votre propre Gloo.
_G.round = function(x, factor)
local factor = (factor) and (10^factor) or 0
return math.floor((x + 0.5) * factor)/factor
end
'chaîne.format ("%. 1f ", pourcentage * 100)' –