Pega quatro valores float no input e coloca somente uma casa decimal

52 views
Skip to first unread message

Daniel Lucas

unread,
Dec 28, 2020, 10:42:02 AM12/28/20
to Lua BR
Como leio os 4 valores em uma linha sendo eles double e imprimo com só uma casa
a,b,c,d =tonumber(io.read(),10)

Denis Dos Santos Silva

unread,
Dec 28, 2020, 11:58:32 AM12/28/20
to Lua BR
a função io.read() retorna uma string  ( https://www.lua.org/manual/5.3/manual.html#pdf-io.read )

exemplo:
$ lua-5.1 -e ' a = io.read("*l"); print(type(a), a)'
1.1 2.3 3.44444
string  1.1 2.3 3.44444

então levando em consideração que voce iria digitar/informar os numeros "inline" segue abaixo um exemplo
$cat  test.lua
local str;
local tbl = {};
local soma = 0;

print( _VERSION )

io.write('Digite os numeros: ');
str = io.read('*l');

for token in string.gmatch(str, "[^%s]+") do
   print(token);
   soma = tonumber(soma) + tonumber(token);
end

print( 'soma', soma );

--- fim do arquivo ---

$ lua-5.1 test.lua
Lua 5.1
Digite os numeros: 1.1 2.2 .3 3.3
1.1
2.2
.3
3.3
soma    6.9

Daniel Lucas

unread,
Dec 28, 2020, 12:25:41 PM12/28/20
to Lua BR
Eu conseguir usando gmaps e string format , mas obrigado.

Daniel Lucas

unread,
Dec 28, 2020, 12:26:12 PM12/28/20
to Lua BR
function divide(parametro)
linha = {}
n = 0
-- parametro para espaço "*l"
for i in string.gmatch(io.read(parametro), "%S+") do
   n = n + 1
   linha[n] = i
end
return linha
end
Reply all
Reply to author
Forward
0 new messages