Estou aprendendo Ruby, e para treinar, uso a plataforma URI Online Judge para resolver alguns problemas apresentados, e para que seja corrigido o que eu faço, existem alguns requisitos dependendo do exercício, e um deles é, imprimir mais de uma casa decimal(limitado dependendo do exercício). Até ai OK, eu sei, usando: .round
antes de imprimir um calor e colocando a quantidade de casas decimeis que eu quero imprimir.
Mas o problema vem quando o valor a ser impresso tem casas decimais 0.00 (mais de um zero) e ele acaba imprimindo apenas um zero apos o ponto.
exemplo:
func, nhoras, vhoras = gets.to_i, gets.to_i, gets.to_f
puts "NUMBER = #{func}\n"
puts "SALARY = U$ #{((nhoras * vhoras) + 0.001).round 2}\n"
Se entrarmos com os valores func = 25, nhoras = 100 e vhoras = 5.5, imprime: “NUMBER = 25” e “SALARY = U$ 550.0” e não “SALARY = U$ 550.00” como deveria / esperado.
Como podem ver, eu té somei o valor multiplicado por 0.001 para ver se imprimia dois zeros após o ponto, mas mesmo assim, imprimi apenas 1 o que acaba fazendo com que o exercício esteja errado (o modo de avaliação é comparando os resultados que o meu código produziu com uma tabela já feita deles).