Technician Geschrieben 30. Dezember 2004 Geschrieben 30. Dezember 2004 Hallo, ich möchte überprüfen, ob eine Zahl (double) eine Ganzzahl ist, d.h. ob die Nachkommastellen gleich oder != 0 sind. Wie löse ich das am schnellsten? Kann ich einfach folgendes machen (leider gerade kein Compiler verfügbar, um was auszutesten): - double my_nr in int i_nr umwandeln - von my_nr i_nr subtrahieren - wenn Ergebnis > 0, dann gibt es Nachkommastellen Wie würdet ihr das machen? Gruß, Technician
Warfox Geschrieben 30. Dezember 2004 Geschrieben 30. Dezember 2004 hmm ich würde das einfach so machen: double zupruefenderwert; int testwert; testwert = zupruefenderwert; if ((zupruefenderwert - testwert) != 0) { //deine Nachverarbeitung; } müsst eigentlich gehen :floet:
Darth_Zeus Geschrieben 30. Dezember 2004 Geschrieben 30. Dezember 2004 Hmm, jaaa, also, Warfox..... Ich denke, Technician wollte genau das sagen. Ich mache es auch so, halte es für die einfachste Lösung.
Guybrush Threepwood Geschrieben 30. Dezember 2004 Geschrieben 30. Dezember 2004 Ich denke nicht das das geht weil du bei einer Gleitkommazahl selbst wenn es eine "Ganzzahl" ist meistens nie genau 1 oder 2 oder so hast, sondern irgendwas wie 1,000000000001. Wenn soltest du es mit einem Epsilonvergleich probieren: if ((zupruefenderwert - testwert) > 0,00001) { //keine ganzzahl } [/PHP] Das sollte IMHO zuverlässiger sein.
Technician Geschrieben 30. Dezember 2004 Autor Geschrieben 30. Dezember 2004 Hmm, jaaa, also, Warfox..... Ich denke, Technician wollte genau das sagen. exakt @Guybrush Werde das heute abend oder morgen ausprobieren.
Kratzy974 Geschrieben 4. Januar 2005 Geschrieben 4. Januar 2005 Ich nutze gerne : if(a != (double)((int)a) Allerdings weiß ich nicht, um wie viel dies schneller ist, da ich mir zwar eine Subtraktion spare, aber dafür zwei Wandlungen mache.... Aber die wird normalerweise auch automatisch beri der Subtraktion zweier unterschiedlicher Variablentypen gemacht. kind regards, Kristian Kratzenstein
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden