periodico pasar numeros numero mixto generatriz fracciones fraccion ejercicios decimales convertir convertidor como ruby-on-rails ruby ruby-on-rails-3

ruby-on-rails - pasar - fraccion generatriz



obtener parte de la fracción de un número decimal (8)

... "1.23" y quiero obtener "23".

Solo remueve la parte entera y multiplica por 100.

((number - number.to_i) * 100).to_i

Estoy tratando de obtener una parte fraccionaria de un número decimal en los carriles. Por ejemplo, tengo un número, ese "1.23" y quiero obtener "23" Puede que sea demasiado fácil, pero, ¿alguien tiene alguna idea de cómo puedo hacerlo?


Decidir la solución adecuada requiere comprender el tipo con el que está trabajando. Si sus valores son Flotante (el tipo estándar para números no completos en Ruby), las respuestas lógicamente correctas como mod(1) pueden producir resultados inesperados debido a errores de punto flotante . Para cualquier caso en el que Float sea el tipo de datos adecuado para usar en primer lugar, es probable que esto sea aceptable.

Si los errores de punto flotante no son aceptables, ¡no use Float ! Ruby viene con la gran clase BigDecimal , que es mucho más precisa a costa del rendimiento y una sintaxis un poco más detallada.

decimal = BigDecimal.new("1.23") decimal.frac #=> 0.23


Después de intentarlo todo ... siento que la mejor respuesta es (num - num.to_i).abs porque también funciona con números negativos.

p.ej

(1.23 - 1.23.to_i) .abs = 0.23

(-1.23 - -1.23.to_i) .abs = 0.23


No estoy seguro de si es la forma más fácil de hacerlo, pero simplemente puede dividir el número usando "." personaje - como este

number = 1.23 parts = number.to_s.split(".") result = parts.count > 1 ? parts[1].to_s : 0


Si conoce la precisión deseada, esto podría ser un poco más rápido para esta solución.

1.1234.modulo(1).round(4) #0.1234



a=1.23 #value of a will be 1.23 a=a-a.to_i #value of a will be 0.23