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