[C] Prüfee Zahl ob nachkommastellen vorhanden

Hallo,

bin recht neu in C und würde gerne mal wissen wie ich prüfen kann ob eine zahl nachkommastellen hat oder nicht. Bzw. ob jetzt 0er hinter dem komma stehen oder andere zahlen.

Also ich würde gerne eine if abfrage bauen und das soll nur genommen werden, wenn keine nachkomma zahlen gibt. Also 4:2 = ok , 4:3 = nicht ok

Ich danke schonmal,

Gruß

Hallo WaldiWo

#include 

int hatKommas(double dl)
{
 long nurInt = (long)dl;
 double kommas = dl - nurInt;
 return (kommas \> 0);
};

int main()
{
 if (hatKommas(4 / 3)) {printf("hat Kommas.\n");}
 else {printf("hat keine.\n");}
 return 0;
}

mfG
Martin B

Hallo

bin recht neu in C und würde gerne mal wissen wie ich prüfen
kann ob eine zahl nachkommastellen hat oder nicht. Bzw. ob
jetzt 0er hinter dem komma stehen oder andere zahlen.

Die Funktion

double modf(double zahl, double \*vorkomma)

aus math.h zerlegt

zahl

in einen Vorkommaanteil, der sich dann in der Adresse von

vorkomma

befindet, und den Nachkommaanteil zurückgibt.
Den Rückgabewert kannst du dann mittels eines if vergleichen.
Liebe Grüße
Alex

Hi,

Die Funktion

double modf(double zahl, double

Den Rückgabewert kannst du dann mittels eines if vergleichen.

im Prinzip richtig …

Aber:

Punkt 1: Wenn es um positive Zahlen geht, könnte man sich auch das Ergebnis von (x-floor(x)) anschauen. Die Berechnung von diesem Ausdruck ist um einiges schneller.

Punkt 2: Sei nicht überrascht, wenn für einige Zahlen der Test fehlschlägt. Denn einige Zahlen haben einen NK Anteil, obwohl die Ausgabe etwas anderes sagt.

Gruss
norsemanna

Hallo WaldiWo !

Also ich würde gerne eine if abfrage bauen und das soll nur
genommen werden, wenn keine nachkomma zahlen gibt. Also 4:2 =
ok , 4:3 = nicht ok

Wenn es sich wie bei deinen Beispielen auschliesslich um ganze Zahlen (int) handelt ist die einfachste und schnellste Variante der Modulo-Operator:

int a, b;
...
if ((a % b) == 0)
 // ohne Rest teilbar
else
 // nicht ohne Rest teilbar

mfg
Christof