Division -> Prüfung ob Zahl Ganzzahl ist

Lautsprecher

Erfahrenes Mitglied
Hallo,
ich möchte eine Division durchführen. Danach möchte ich prüfen, ob das Ergebnis eine Ganzzahl ist oder eine Kommazahl. Wichtig ist, ich kann nicht einfach runden oder auf Integer konvertieren und so die Stellen nach dem Komma vernachlässigen.
Es es da vielleicht irgendeine Methode die mir einen boolschen Wert liefert?
z. b. true bei kommazahl
false bei Ganzzahl

Grüße
 
Hier ist ne Funktion einfach in den Code einfügen und aufrufen!

Funktion:
public static boolean isPointValue(double d){
Double tD = new Double(d);
String str = tD.toString();
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == '.'){
System.out.println(str.substring(i+1,str.length()));
int ix = Integer.valueOf(str.substring(i+1,str.length()));
if(ix > 0){
return true;
}
}
}
return false;
}


Aufruf:
System.out.println(isPointValue(12.3));

Ausgabe:
true

Beschreibung:
bei Kommazahlen wird ein 'true' zurückgegeben und bei Ganzzahlen ein 'false'
 
Hallo!

Wenn dir die Genauigkeit von float ausreicht...:
Code:
/**
 * 
 */
package de.tutorials;

/**
 * @author daritho
 *
 */
public class IsFLoatingPointNumber {

    /**
     * @param args
     */
    public static void main(String[] args) {
        double f = 423489.0000000001;
        //double f = 423489.00000000001;
        
        System.out.println((float)f);
        if(isNearZero(Math.abs(f) - (int)Math.abs(f))){
            System.out.println("Ergebnis ganzzahlig");
        }else{
            System.out.println("Ergebnis nicht ganzzahlig");
        }
    }
    
    static boolean isNearZero(double value){
        return Math.abs(value) < Float.MIN_VALUE;
    }
}

Gruss Tom
 
HiHi..

hatte beim ersten Gedanken auch daran gedacht

Code:
ergebnis=zahl%teiler;

Wenn ergebnis 0 ist, ist die das Ergebnis eine Ganzzahl, ansonsten bekommst du als Rückgabewert den Rest.

Mfg
Dom
 
Hallo!

Das wird nicht funktionieren ,... welchen Teiler willst du denn da angeben? Im Prinzip musst du von der potentiellen Fliesskommazahl (x) erstmal den Betrag |x| bestimmen, dort die Nachkommastellen abschneiden und diesen dann als Teiler verwenden.
Also:
Math.abs(x) % ((int)Math.abs(x)) -> Math.abs(f) - (int)Math.abs(f) wobei ich mit isNearZero noch eine Ueberpruefung durchfuehre ob der Wert innerhalb der geforderten Genauigkeit liegt...

Gruss Tom
 
Lautsprecher hat gesagt.:
Hallo,
ich möchte eine Division durchführen. Danach möchte ich prüfen, ob das Ergebnis eine Ganzzahl ist oder eine Kommazahl.

Nach meinem Mathe-Wissensstand ist 5:4 eine Division, 5%4 ergibt 1 =keine Ganzzahl, 4%2 ergibt 0 = Ganzzahl.

Thomas Darimont hat gesagt.:
Hallo!
welchen Teiler willst du denn da angeben?
Gruss Tom

Was immer er in seiner Divison verwenden will...

Mfg
Dom
 
Hallo!

Ich glaube hier liegt ein Missverstaendnis vor...
Nach meinem Mathe-Wissensstand ist 5:4 eine Division, 5%4 ergibt 1 =keine Ganzzahl, 4%2 ergibt 0 = Ganzzahl.
Eine Ganzzahl muss nicht unbedingt eine gerade Zahl sein... ;-) z % 2 == 0 -> gerade Zahl; z % 2 == 1 -> ungerade Zahl.

Gruss Tom
 
Ich zitiere:
"ich möchte eine Division durchführen. Danach möchte ich prüfen, ob das Ergebnis eine Ganzzahl ist oder eine Kommazahl."

AFAIK - die Mathematik mag sich geändert haben - liefert der Modulo nur dann 0, wenn bei bei der Division A/B der Wert von A ein ganzzahliges Vielfaches von B ist. Dabei ist es völlig unerheblich, ob A und/oder B gerade oder ungerade Zahlen sind. Ergo würde ich ein Ergebnis ungleich 0 so interpretieren, dass das Ergebnis der Division eine (Fließ-)Kommazahl ist.
 

Neue Beiträge

Zurück