C / Werte prüfen

peter333

Erfahrenes Mitglied
Hallo zusammen,

wie kann ich in C prüfen, ob eine eingegebene Variable eine Int oder eine Float Variable ist

if (meine_variable = )
{

}

LG Peter
 
(vom 17.10.2008, gleiches Forum)
C:
if(var % 1 == var)
Das Problem ist, das das nicht funktionieren kann. Den Modulo Operator kann man nicht auf float Werte anwenden und Typpromotion funktioniert nur zu den höherwertigen Typen (z.B. von int zu float, aber nicht automatisch von float zu int).

Außerdem ist fraglich was damit erreicht werden soll. var mod 1 ? Da kommt bei mir immer 0 raus. (außer für var = 0)

Man könnte ja eigentlich einfach den Nachkommateil durch Casten entfernen...

Gruß
 
Hallo,
Nein, tut es nicht. Es wird nicht kompiliert. (unter der Annahme, dass var ein float oder double ist, falls es ein integraler Typ ist, macht es sowieso keinen Sinn.)

Gruß

endlich mal jemand der den Krampf löst :)

@topic Das sollte es tun:
C:
  double c = -1.003, epsilon = 1E-6;

  if (fabs(c - (int) c) < epsilon) {
      printf("No comma number\n");
  } else {
      printf("Comma number\n");
  }

Gruß,
RedWing
 
Hmmm... wenn ich mir das von Redwing so anschaue, dann sieht das für mich nach einer Näherung aus. Gibt es keine absolute und eindeutige Möglichkeit?
 
Hi.

C++:
double d;

if (static_cast<long>(d) == d) ...
Nach meinem Verständnis sollte das so funktionieren. Ich kann es allerdings nicht eindeutig belegen, da müßte man mal den C/C++ Standard zu rate ziehen.

Gruß
 
Zurück