Estoy tratando de obtener una fracción de un número decimal en los rieles. Por ejemplo, tengo un número, ese "1.23" y quiero obtener "23" Puede ser demasiado fácil pero, ¿alguien tiene alguna idea sobre cómo puedo hacer?obtener la parte de la fracción de un número decimal
Respuesta
No estoy seguro de si es la forma más fácil de hacerlo, pero simplemente puede dividir el número con "." personaje - como esto:
number = 1.23
parts = number.to_s.split(".")
result = parts.count > 1 ? parts[1].to_s : 0
n = 1.23
n.modulo(1)
=> 0.22999999999999998
n-n.to.i
=> 0.22999999999999998
recomendado leer http://floating-point-gui.de/
gracias Jonas, lo probé. – yagmurdursun
intenta utilizar el método de módulo:
1.23.modulo(1) => 0.23
Leer más aquí: http://www.ruby-doc.org/core-1.9.3/Numeric.html#method-i-modulo
o puede convertir flotante a un entero y restar que a partir de valor flotante originales .
1.23 - 1.23.to_i => 0.23
gracias Eugene, lo intenté también. – yagmurdursun
Me sale '(1.1) .modulo (1) # 0.10000000000000009' que es menos que aceptable. –
Y obtengo 1.234 - 1.234.to_i # 0.2399999999999999 que es menos que aceptable. Esto es típico de arithemetic punto flotante. Entonces, ¿es el camino de EfratBlaier el mejor entonces? – labyrinth
a=1.23 #value of a will be 1.23
a=a-a.to_i #value of a will be 0.23
si sabe que su precisión deseada, esto podría ser un poco más rápido a la solución to_s.
1.1234.modulo(1).round(4) #0.1234
Decidir sobre la solución adecuada requiere comprender el tipo con el que está trabajando. Si sus valores son Float (el tipo estándar para números no enteros en Ruby), entonces las respuestas lógicamente correctas como mod(1)
pueden producir resultados inesperados debido a floating point errors. Para cualquier caso en que Float sea el tipo de datos adecuado para usar en primer lugar, es probable que sea aceptable.
Si los errores de punto flotante son no aceptable, no use Float
! Ruby viene con la gran clase BigDecimal
que es mucho más precisa a costa del rendimiento y con una sintaxis ligeramente más detallada.
decimal = BigDecimal.new("1.23")
decimal.fraC#=> 0.23
Después de probar todo lo ... siento la mejor respuesta es (num - num.to_i).abs
, ya que también funciona para los números negativos.
p. Ej.
(1,23 - 1.23.to_i) .abs = 0,23
(-1,23 - -1.23.to_i) .abs = 0,23
- 1. Obtener la parte decimal de un número flotante
- 2. Aproximación de fracción decimal a fracción irracional
- 3. Redondeo de la fracción decimal en ios
- 4. ¿Cómo redondear un decimal a la fracción más cercana?
- 5. buscando la parte del número entero de un número
- 6. ¿Hay alguna manera de obtener la sección decimal repetitiva de una fracción en Python?
- 7. Python Convierte fracción a decimal
- 8. Java: formatee el número para imprimir la parte decimal solamente
- 9. ¿Cómo obtener una fracción de un número flotante?
- 10. De Fracción a Decimal y Atrás?
- 11. PHP convierte decimal a fracción y viceversa?
- 12. Extrae la parte decimal de un número de coma flotante en C
- 13. Determine la precisión decimal de un número de entrada
- 14. Algoritmo optimizado para convertir un decimal en una fracción "bonita"
- 15. Cómo analizar una fracción decimal en Rational en Haskell?
- 16. Java: ¿cómo obtengo la parte después del punto decimal?
- 17. Obtener la parte fraccionaria de un flotante sin usar modf()
- 18. Posible pérdida de la fracción
- 19. Android/Java: Redondeando un número para no obtener decimal
- 20. ¿Cómo obtener un número decimal al dividir en bc?
- 21. obtener el ISO 8601 con segundos.de fracción decimal de segundo fecha en php?
- 22. ¿Cómo limitar un número decimal?
- 23. Número entero o número decimal
- 24. La conversión de un decimal a un número doble en C# resultados en una diferencia
- 25. Número de impresión como fracción reducida en R
- 26. Java, extraer solo la parte fraccional de un BigDecimal?
- 27. ¿Por qué la división en Ruby devuelve un número entero en lugar de un valor decimal?
- 28. Mostrar un número en formato decimal de 2 puntos en jsf
- 29. Python: La conversión de cadena en número decimal
- 30. ¿Cómo mostrar siempre la parte decimal al usar DecimalFormat?
que funciona! gracias EfratBlaier. – yagmurdursun
lectores futuros, no utilice este enfoque. Puede funcionar en un caso simplista, pero saltará en cualquier escenario que tenga en cuenta la configuración regional. Aunque no es muy propenso a errores en Ruby, que codifica "." Como el delimitador de coma flotante, promovería el mal hábito para ser utilizado con otros lenguajes menos permisivos.Utilice funciones matemáticas para operaciones matemáticas, vea las respuestas a continuación. –