Controlar casas decimais é bem fácil em Lua. O exemplo abaixo limita o número de casas decimais na tela.
-
-
Save reinaldo/29a569e6870a414847de698e8142bdc1 to your computer and use it in GitHub Desktop.
-- O arredondamento para baixo do número escolhido se dá desta maneira: | |
valorx = 1.1 | |
arredondado = tonumber(string.format("%.0f", valorx)) | |
print(arredondado) | |
-->> 1 | |
valorx = 1.4 | |
arredondado = tonumber(string.format("%.0f", valorx)) | |
print(arredondado) | |
-->> 1 | |
valorx = 1.49 | |
arredondado = tonumber(string.format("%.0f", valorx)) | |
print(arredondado) | |
-->> 1 |
-- O arredondamento para cima do número escolhido se dá desta maneira: | |
valorx = 1.7 | |
print(math.floor(valorx + 0.5)) | |
-->> 2 | |
-- ou | |
valorx = 1.7 | |
arredondado = tonumber(string.format("%.0f", valorx)) | |
print(arredondado) | |
-->> 2 |
io.write("5 + 3 = ", 5+3, "\n") | |
io.write("5 - 3 = ", 5-3, "\n") | |
io.write("5 * 3 = ", 5*3, "\n") | |
io.write("5 / 3 = ", 5/3, "\n") | |
io.write("5.2 % 3 = ", 5%3, "\n") | |
-- Gera valor aleatorio entre 0 and 1 | |
io.write("math.random() : ", math.random(0,3), "\n") | |
-- Apresenta float com 10 casas decimais | |
print(string.format("Pi = %.10f", math.pi)) |
print(string.format("%0.3f", 10.12345)) -->> 10.123 |
print(100 + "7") | |
-->> 107 | |
print("1000" + 234) | |
-->> 1234 | |
print("olá" + 234) | |
-->> erro na tela | |
print(234 + "1000") | |
-->> 1234 |
Coerção significa conversão automática de tipos.
Para realizar cálculos, Lua converte automaticamente os tipos de sequência e número para o formato correto.
Por exemplo: se você tentar aplicar uma operação aritmética a uma string, Lua tentará converter essa string em um número primeiro. Caso contrário, a operação não funcionará.
Vale saber que se a sequência não puder ser convertida em um número, um erro será gerado.
local cos, sin = math.cos, math.sin | |
local pi,tan,exp = math.pi,math.tan,math.exp |
--- variacoes para o math.floor | |
print(math.floor(12.5928)) --> 12 | |
print(math.floor(12.5928 * 10) / 10) --> 12.5 | |
print(math.floor(12.5928 * 100) / 100) --> 12.59 |
-- diferentes formatacoes de campo | |
taxa_importacao = 15.521825348912 | |
company = "vacinaneles.com" | |
minhafrase = string.format("O preco da vacina da empresa %s eh %f.", company, taxa_importacao) | |
print(minhafrase) | |
minhafrase = string.format("O preco da vacina da empresa %s eh %.2f.", company, taxa_importacao) | |
print(minhafrase) | |
minhafrase = string.format("O preco da vacina da empresa %s eh %8.2f.", company, taxa_importacao) | |
print(minhafrase) | |
minhafrase = string.format("O preco da vacina da empresa %s eh %08.2f.", company, taxa_importacao) | |
print(minhafrase) | |
minhafrase = string.format("O preco da vacina da empresa %s eh %03.2f.", company, taxa_importacao) | |
print(minhafrase) | |
-- resultado | |
-->> O preco da vacina da empresa vacinaneles.com eh 15.521825. | |
-->> O preco da vacina da empresa vacinaneles.com eh 15.52. | |
-->> O preco da vacina da empresa vacinaneles.com eh 15.52. | |
-->> O preco da vacina da empresa vacinaneles.com eh 00015.52. | |
-->> O preco da vacina da empresa vacinaneles.com eh 15.52. |
idade = 17 | |
if idade < 16 then | |
print(string.format("Voce ainda eh um jovem com %d anos\n", idade)) | |
elseif (idade == 34) or (idade==35) then | |
print("Ficando mais velho...") | |
else | |
print("Olah Aborrescente!") | |
end | |
podevotar = idade > 18 and true or false | |
io.write("Posso votar?: ", tostring(canVote)) |
Número é qualquer série de dígitos; pode começar com um sinal de menos e incluir um ponto decimal.
Os números não são nada especiais. Você pode usar números sem frações (inteiros) e números com frações (flutuantes ou valores de ponto flutuante).
a = 0.5
a = 4
As operações de adição, subtração, multiplicação e divisão podem ser usadas em expressões para fazer matemática com números.
Os parênteses podem ser usados para agrupar operações quando você precisa impor a prioridade das operações.
1.0045662100457
-5
+128
2 + ( 3 - 4 )
2200 / 6 / 365
--[[ | |
Nome da funcao: math.sqrt | |
Descricao: Retorna a raiz quadrada de um determinado número. Apenas argumentos não negativos são permitidos. | |
]] | |
print ( math.sqrt (100) ) | |
-->> 10 | |
print ( math.sqrt (1234) ) | |
-->> 35.128336140501 | |
print ( math.sqrt (-7) ) | |
-->> -nan |
--[[ | |
Nome da Funcao: math.abs | |
Descricao: Retorna o valor absoluto ou não negativo de um determinado valor. | |
]] | |
print ( math.abs (-100) ) | |
--> 100 | |
print ( math.abs (25.67) ) | |
--> 25.67 | |
print ( math.abs (0) ) | |
--> 0 |
--[[ | |
Nome da funcao: math.acos, math.asin | |
Descricao: Retorna o cosseno inverso e o seno em radianos do valor fornecido. | |
]] | |
print ( math.acos(1) ) | |
-->> 0 | |
print ( math.acos(0) ) | |
-->> 1.5707963267949 | |
print ( math.asin(0) ) | |
-->> 0 | |
print ( math.asin(1) ) | |
-->> 1.5707963267949 | |
--[[ | |
Nome da funcao: math.atan | |
Descricao: Retorna a tangente inversa em radianos. Podemos fazer isso fornecendo y / x nós mesmos ou podemos passar y e x math.atan para fazer isso. | |
]] | |
c, s = math.cos (0,8), math.sin (0,8) | |
print ( math.atan (s / c) ) | |
-->> 0,8 | |
print ( math.atan (s, c) ) | |
-->> 0,8 |
--[[ | |
Nome da funcao: math.cos, math.sin, math.tan | |
Descricao: Retorne o valor cosseno, seno e tangente para um determinado valor em radianos. | |
]] | |
print ( math.cos (math.pi / 4) ) | |
-->> 0.70710678118655 | |
print ( math.sin (0.123) ) | |
-->> 0.12269009002432 | |
print ( math.tan (5/4) ) | |
-->> 3.0095696738628 | |
print ( math.tan (0.77) ) | |
-->> 0.96966832796149 |
--[[ | |
Nome da funcao: math.deg, math.rad | |
Descricao: Converta de radianos em graus e vice-versa. | |
]] | |
print ( math.deg(math.pi) ) | |
-->> 180 | |
print ( math.deg(math.pi / 2) ) | |
-->> 90 | |
print ( math.rad(180) ) | |
-->> 3.1415926535898 | |
print ( math.rad(1) ) | |
-->> 0.017453292519943 |
--[[ | |
Nome da funcao: math.exp, math.log | |
Descricao: | |
math.exp(valor) retorna e natural (a base dos logaritmos naturais) elevado à potência valor. | |
math.log() retorna o inverso disso. | |
math.exp(1) retorna e natural. | |
]] | |
print ( math.exp(0) ) | |
-->> 1 | |
print ( math.exp(1) ) | |
-->> 2.718281828459 | |
print ( math.exp(27) ) | |
-->> 532048240601.8 | |
print ( math.log (532048240601) ) | |
-->> 26.999999999998 | |
print ( math.log (3) ) | |
-->> 1.0986122886681 |
--[[ | |
Nome da funcao: math.ceil, math.floor | |
Descricao: Retorne o número inteiro não maior ou menor que o valor fornecido (mesmo para negativos). | |
]] | |
print ( math.floor (0.5) ) | |
-->> 0 | |
print ( math.ceil (0.5) ) | |
-->> 1 | |
print ( math.floor (-0.5) ) | |
-->> -1 | |
print ( math.ceil (-0.5) ) | |
-->> -0 |
--[[ | |
Nome da funcao: math.min, math.max | |
Descricao: Retorne o valor mínimo ou máximo de uma lista de argumentos de comprimento variável. | |
]] | |
print ( math.min(1,2) ) | |
-->> 1 | |
print ( math.min(1.2, 7, 3) ) | |
-->> 1.2 | |
print ( math.min(1.2, -7, 3) ) | |
-->> -7 | |
print ( math.max(1.2, -7, 3) ) | |
-->> 3 | |
print ( math.max(1.2, 7, 3) ) | |
-->> 7 |
--[[ | |
Nome da funcao: math.modf | |
Descricao: Retorna as partes integrais e fracionárias do número fornecido. | |
]] | |
print ( math.modf(5) ) | |
-->> 5 0 | |
print ( math.modf(5.3) ) | |
-->> 5 0.3 | |
print ( math.modf(-5.3) ) | |
-->> -5 -0.3 |
--[[ | |
Nome da funcao: math.pi | |
Descricao: Esta é uma parte da constante Pi. | |
]] | |
print ( math.pi ) | |
-->> 3.1415926535898 |
--[[ | |
Nome da funcao: math.random, math.randomseed | |
math.random() gera números pseudo-aleatórios uniformemente distribuídos. O fornecimento de argumento altera seu comportamento: | |
math.random() sem argumentos gera um número real entre 0 e 1. | |
math.random(upper)gera números inteiros entre 1 e superior (ambos inclusivos). | |
math.random(lower, upper) gera números inteiros entre inferior e superior (ambos inclusivos). | |
]] | |
print ( math.random () ) | |
-->> 0.0012512588885159 | |
print ( math.random () ) | |
-->> 0.56358531449324 | |
print ( math.random (100) ) | |
-->> 20 | |
print ( math.random (100) ) | |
-->> 81 | |
print ( math.random (70,80) ) | |
-->> 76 | |
print ( math.random (70,80) ) | |
-->> 75 |
-- O argumento é uma frase e deveria ser número, logo retornará erro! | |
print(tonumber("Curso de Química!")) | |
-->> nil |
print(tonumber( "123" ) + 25) | |
-->> 148 | |
x = tonumber( "123.456e5" ) | |
print(x) | |
-->> 12345600 |