Veröffentlicht 30. Dezember 200420 j 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
30. Dezember 200420 j 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:
30. Dezember 200420 j Hmm, jaaa, also, Warfox..... Ich denke, Technician wollte genau das sagen. Ich mache es auch so, halte es für die einfachste Lösung.
30. Dezember 200420 j 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.
30. Dezember 200420 j Hmm, jaaa, also, Warfox..... Ich denke, Technician wollte genau das sagen. exakt @Guybrush Werde das heute abend oder morgen ausprobieren.
4. Januar 200520 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.