Appearance
LuaDecimal
LuaDecimal representa un número decimal de alta precisión, ideal para montos, precios y valores financieros.
Conversión a string
lua
tostring(d) -- → "13453.33"
"" .. d -- → "13453.33"Creación
Se crea con la función global decimal():
lua
local monto = decimal("123.45") -- desde string
local iva = decimal(21.5) -- desde number
local c = decimal(variable) -- desde cualquier variable number/stringAritmética
Soporta operaciones con otros LuaDecimal y con números nativos:
lua
local total = monto + iva -- → LuaDecimal
local diff = monto - 50 -- → LuaDecimal
local iva2 = monto * 0.21 -- → LuaDecimal
local mitad = monto / 2 -- → LuaDecimalComparación
Se puede comparar con otros LuaDecimal y con números nativos:
lua
monto > 100 -- → true
monto == 123.45 -- → true
monto < 200 -- → trueUso con funciones nativas
Gracias a __tonumber, se puede usar donde se espera un number nativo:
lua
local redondeado = math.floor(monto)Parte entera
lua
monto:int() -- → 1250 (number, truncado)Formato
decimal:format()
Formatea el decimal con un patrón específico y cultura opcional.
lua
monto:format() -- → "1.250,50" (según cultura de la app)
monto:format("C") -- → "$ 1.250,50" (moneda)
monto:format("N0") -- → "1.251" (sin decimales)
monto:format("0.00", "en-US") -- → "1250.50" (cultura explícita)
monto:format("#,##0.00") -- → "1.250,50"El formato sigue los patrones de formato numérico de .NET.