redondeo - ¿Cómo se redondea un flotador con dos decimales en jruby?
redondeo de numeros decimales (6)
Editar
Después de recibir comentarios, parece que la solución original no funcionó. Es por eso que actualicé la respuesta como una de las sugerencias.
def float_of_2_decimal(float_n)
float_n.to_d.round(2, :truncate).to_f
end
Otras respuestas pueden funcionar, si desea tener números redondeados de 2 decimales. Pero, si desea tener números de coma flotante con los dos primeros lugares decimales sin redondeo , esas respuestas no ayudarán.
Entonces, para obtener un número de coma flotante con dos primeros decimales, utilicé esta técnica. No funciona en algunos casos
def float_of_2_decimal(float_n)
float_n.round(3).to_s[0..3].to_f
end
con 5.666666666666666666666666
, devolverá 5.66
lugar de 5.67
redondeado. Espero que ayude a alguien
JRuby 1.6.x. ¿Cómo redondeas un flotante a decimales en jruby?
number = 1.1164
number.round(2)
The above shows the following error
wrong number of arguments (1 for 0)
¿Cómo redondeo esto a 2 decimales?
Float # round puede tomar un parámetro en Ruby 1.9, no en Ruby 1.8. JRuby tiene como valor predeterminado 1.8, pero es capaz de ejecutarse en modo 1.9 .
Prueba esto:
module Util
module MyUtil
def self.redondear_up(suma,cantidad, decimales=0)
unless suma.present?
return nil
end
if suma>0
resultado= (suma.to_f/cantidad)
return resultado.round(decimales)
end
return nil
end
end
end
para truncar un decimal, he usado el siguiente código:
<th><%#= sprintf("%0.01f",prom/total) %><!--1dec,aprox-->
<% if prom == 0 or total == 0 %>
N.E.
<% else %>
<%= Integer((prom/total).to_d*10)*0.1 %><!--1decimal,truncado-->
<% end %>
<%#= prom/total %>
</th>
Si desea truncar a 2 decimales, debe usar Integr(a*100)*0.01
sprintf(''%.2f'', number)
es una forma críptica, pero muy poderosa de formatear números. El resultado es siempre una cadena, pero dado que estás redondeando, supongo que lo haces para fines de presentación de todos modos. sprintf
puede formatear cualquier número casi de cualquier manera, y mucho más.
Documentación completa de sprintf: http://www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
(5.65235534).round(2)
#=> 5.65