Si tengo un número de coma flotante en Haskell, ¿cómo puedo probar si se trata de un número entero?¿Cómo puedo probar si un número de coma flotante es un número entero en haskell?
15
A
Respuesta
24
isInt x = x == fromInteger (round x)
> isInt 2
True
> isInt 2.5
False
Y sólo un recordatorio: recuerde siempre la maldición omnipotente de los números de punto flotante:
> isInt (0.1^2*200)
False
> 0.1^2*200
2.0000000000000004
15
bien, así que este es un año de retraso, pero yo soy un gran fan de una modificación de lo anterior:
--Returns if x is an int to n decimal places
isInt :: (Integral a, RealFrac b) => b -> a -> Bool
isInt x n = (round $ 10^(fromIntegral n)*(x-(fromIntegral $ round x)))==0
Así, por ejemplo isInt 4.0001 3
vuelve True
pero isInt 4.0001 4
vuelve False
. Ejecutarlo con un valor alrededor de 10
es casi siempre lo suficientemente preciso como para que los errores de float sean lo que vuelva a generar sus problemas; Usualmente uso 7
.
Cuestiones relacionadas
- 1. ¿Puedo comparar y agregar un número de coma flotante a un número entero en C?
- 2. ¿Cómo detectar si un número dado es un número entero?
- 3. Java - ¿Cómo comprobar si una división es un número entero o un número flotante?
- 4. Haskell: leer un número (entero o punto flotante)
- 5. Reinterpretar el número de coma flotante al entero
- 6. detectar si NSString es un número flotante
- 7. redondear un número de coma flotante al siguiente valor entero en java
- 8. Python: prueba si un argumento es un número entero
- 9. Representando bien un número de coma flotante en python
- 10. Determinar si un valor es un número entero en Python
- 11. ¿Cómo puedo convertir un número entero en float en Java?
- 12. Pruebe si el valor es un número entero en Sass
- 13. ¿Cómo puedo explotar un número entero
- 14. ¿Determinar si el valor de JavaScript es un "número entero"?
- 15. cómo comprobar si el carácter es un número entero
- 16. Comprobando si una variable es un número entero en javascript
- 17. Bash: Probando si una variable es un número entero
- 18. Número entero o número decimal
- 19. ¿Cómo puedo convertir una cadena con punto y coma en un número flotante en Python?
- 20. En JavaScript/jQuery, ¿cuál es la mejor manera de convertir un número con una coma en un número entero?
- 21. Mostrar el número de coma flotante como un porcentaje sin cambiar el valor del número
- 22. Java, compruebe si el número entero es múltiple de un número
- 23. Haskell: compruebe si es un número entero, o compruebe el tipo de variable
- 24. número entero no 'se reduce a un número entero'
- 25. Signo de un número de punto flotante
- 26. ¿Cómo puedo verificar si un valor es un número?
- 27. ¿Cómo puedo determinar si una variante es un número entero en VBA?
- 28. ¿Cuál es una buena forma de mostrar un número de coma flotante a través de SNMP?
- 29. números en coma flotante - número más cercano a 1.7
- 30. ¿Cuál es el siguiente número de punto flotante normalizado después de (antes) un número de punto flotante normalizado f?
genial, ¿hay un built in (por curiosidad) – Peter
@Peter: no, de acuerdo con Hoogle. – yairchu
Tenga en cuenta que 'isInt (1/0) == True' – hvr