Zahl auf Vozeichen überprüfen



  • Hallo,

    Gibt es eine Funktion mit der ich mit scanf eingelesene double Zahlen auf das Vorzeichen überprüfen kann und wenn ja welche bzw. gibt es andere Möglichkeiten dies zu realisieren?
    -VS



  • Meinst du das?

    double d;
    scanf("%lf", &d);
    if(d < 0)
      printf("d ist negative\n");
    else
      printf("d ist positiv\n");
    


  • Viel zu einfach 🙂

    char *p;
    
    if  ((p = strchr( zahl, '-')) != NULL)
      printf( "negativ");
    else
      printf "positiv");
    


  • gibt es andere Möglichkeiten dies zu realisieren?

    Ja.



  • Vielen Dank. 🙂



  • supertux schrieb:

    Meinst du das?

    double d;
    scanf("%lf", &d);
    if(d < 0)
      printf("d ist negative\n");
    else
      printf("d ist positiv\n");
    

    Schaut zwar einfach und richtig aus, ist aber leider nicht ganz richtig. Fließkommazahlen haben halt ihre Macken :). man: signbit(3) wäre die richtige Wahl

    Hier mal ein Biespielcode, der das Problem illustriert

    #include <math.h>
    #include <stdio.h>
    
    void supertux(double d) {
      if(d < 0)
        printf("d ist negative\n");
      else
        printf("d ist positiv\n");
    }
    
    void mitsignbit(double d) {
      if(signbit(d))
        printf("d ist negativ\n");
      else
        printf("d ist positiv\n");
    }
    
    int main() {
      double a = -sqrt(-1.0);
      double b = sqrt(-1.0);
      double c = -1.0/0.0;
      double d = 1.0/0.0;
      double e = -0.0;
      double f = 0.0;
      printf("%f %f %f %f %f %f\n", a, b, c, d, e, f);
      printf("\nsupertux:\n");
      supertux(a);
      supertux(b);
      supertux(c);
      supertux(d);
      supertux(e);
      supertux(f);
      printf("\nmitsignbit:\n");
      mitsignbit(a);
      mitsignbit(b);
      mitsignbit(c);
      mitsignbit(d);
      mitsignbit(e);
      mitsignbit(f);
    }
    


  • rüdiger schrieb:

    double a = -sqrt(-1.0);
    double b = sqrt(-1.0);
    double c = -1.0/0.0;
    double d = 1.0/0.0;
    double e = -0.0;

    da kommt doch sowieso nur schrott bei raus. wer braucht denn das vorzeichen von null und irgendwelchen kaputten ergebnissen?
    🙂



  • rüdiger schrieb:

    Schaut zwar einfach und richtig aus, ist aber leider nicht ganz richtig. Fließkommazahlen haben halt ihre Macken :). man: signbit(3) wäre die richtige Wahl

    ich hasse Fließkommazahlen, ich dachte schon, dass es nicht 100% richtig war. Aber da ich die Frage des OPs nicht verstand, hab ich mir keine weiteren Gedanken drüber gemacht.


Log in to reply