Wenn ich eine Gleitkommazahl in Haskell habe, wie teste ich, ob es eine ganze Zahl ist.Wie prüfe ich, ob eine Fließkommazahl eine Ganzzahl in haskell ist?
15
A
Antwort
24
isInt x = x == fromInteger (round x)
> isInt 2
True
> isInt 2.5
False
Und nur zur Erinnerung: immer daran denken, den allmächtigen Fluch der Gleitkommazahlen:
> isInt (0.1^2*200)
False
> 0.1^2*200
2.0000000000000004
15
Okay, so ist dies ein Jahr zu spät, aber ich bin ein großer Fan von einer Modifikation die oben:
--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
So zum Beispiel isInt 4.0001 3
kehrt True
aber isInt 4.0001 4
kehrt False
. Es mit einem Wert um 10
läuft fast immer genau genug, dass Float-Fehler werden, was Ihre Probleme wieder gibt; Normalerweise verwende ich 7
.
Verwandte Themen
- 1. Prüfe, ob eine Ganzzahl in einem Bereich liegt
- 2. Fließkommazahl in Ganzzahl umwandeln?
- 3. Prüfe, ob Iterable eine Karte ist
- 4. Wie kann ich feststellen, ob eine Java-Ganzzahl null ist?
- 5. Überprüfen, ob eine Variable eine Ganzzahl in Javascript ist
- 6. Überprüfen, ob eine Ganzzahl leer ist
- 7. Vue.js: Prüfe, ob eine Komponente existiert
- 8. Prüfe, ob struct eine gegebene Schnittstelle implementiert
- 9. Ermitteln, ob eine gegebene Zahl eine Primzahl in Haskell ist
- 10. Schön eine Fließkommazahl in Python
- 11. Testen, ob der Wert eine Ganzzahl in Sass ist
- 12. Wie prüfe ich in Java, ob eine Zeichenfolge eine Teilzeichenfolge enthält (Groß-/Kleinschreibung wird ignoriert)?
- 13. Wie schreibe ich eine gemeinsame Funktion für die Tastenkürzel-Funktion? Prüfe auf die Fließkommazahl einer Textbox in C#?
- 14. Wie kann ich überprüfen, ob eine Zeichenfolge eine positive Ganzzahl ist?
- 15. Wie kann ich durch eine if-Anweisung prüfen, ob ein TextField eine Ganzzahl ist oder nicht?
- 16. Wie prüfe ich in Android
- 17. Wie prüfe ich, ob die erste Ziffer einer ganzen Zahl eine 7 ist?
- 18. Wie überprüft man, ob eine Variable eine Ganzzahl oder eine Zeichenkette ist?
- 19. Prüfe, ob eine Liste von Objekten in Hashset existiert.
- 20. Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in JSonne?
- 21. Eine Ganzzahl ist erforderlich? (Offen)
- 22. VBScript: Überprüfen, ob die Benutzereingabe eine Ganzzahl ist
- 23. Wie überprüfe ich eine Liste in Haskell?
- 24. Bestimmen Sie, ob ein Wert eine Funktion in Haskell ist
- 25. Wie eine Fließkommazahl mit n Dezimalstellen
- 26. Ist '$' eine Funktion in Haskell?
- 27. Wie kann ich eine genaue ganze Zahl von Fließkommazahl erhalten?
- 28. Wie prüfe ich, ob eine Zeichenfolge in bash mit einer anderen beginnt?
- 29. Wie prüfe ich in Java, ob eine Liste von `Double` einen bestimmten Wert enthält
- 30. Java - Wie überprüft man, ob eine Division eine Ganzzahl oder ein Gleitkomma ist?
cool, ist da ein eingebaut (aus Neugier) – Peter
@Peter: nein, nach Hoogle. – yairchu
Beachten Sie, dass 'isInt (1/0) == True' – hvr