Problem mit if-Schleife

  • Problem mit if-Schleife

    Hallo,

    ich bin neu hier und auch noch ein Anfänger mit Objektive-C.
    Ich versuche eine graphische Simulation zu erstellen, dabei bin ich auf ein Problem gestossen, das ich einfach nicht lösen kann!
    Und zwar habe ich in einer for-schleife drei if-Abfragen. Die ersten beiden sollen eigentlich nur ab einem bestimmten Punkt in der for-Schleife zwei Parameter ändern und dann je nach Zustimmung die dritte if-Abfrage durchführen.
    Alle Zahlen-Variablen sind als double deklariert. Wenn ich das genau so wie unten Ausführe, kommt er nie in die erste oder zweite if-Abfrage. Habe das geprüft durch ein NSLog. Wenn ich aber nun die if-Abfrage so aufschreibe " if ( t >= 10.0 )" oder so "if ( t == 0.500000 )", dann kommt man in die if-Abfrage rein, sonst aber nicht. Woran liegt das? Kann mir das einer bitte erklären?
    Vielen Dank!


    Gruß


    Denis


    Quellcode

    1. samples = [[NSMutableArray alloc] initWithCapacity:100];
    2. for (float i = 0; i < 100; i = 0.1+i){
    3. t = i;
    4. if ( t == 10.0 ) {
    5. inj = 0;
    6. vmo = vm;
    7. }
    8. if ( t == 50.0) {
    9. inj = 1;
    10. //vmo = vm;
    11. }
    12. vm = (el+r*inj)+(vmo-(el+r*inj))*exp(-((t-to)/tau));
    13. if (vm > vth) {
    14. vm = 50.0;
    15. t = t-0.1;
    16. NSDictionary *sample = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithDouble:t],X_VAL, [NSNumber numberWithDouble:vm], Y_VAL, nil];
    17. [samples addObject:sample];
    18. vm = el;
    19. sample = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithDouble:t],X_VAL, [NSNumber numberWithDouble:vm], Y_VAL, nil];
    20. [samples addObject:sample];
    21. to = t;
    22. }
    23. else{
    24. NSDictionary *sample = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithDouble:t],X_VAL, [NSNumber numberWithDouble:vm], Y_VAL, nil];
    25. [samples addObject:sample];
    26. }}
    Alles anzeigen
  • osxChristian hat ja schon drauf hingewiesen, dass man eigentlich niemals == zusammen mit floats/doubles verwenden soll.

    Fuer Dein Fall ein tipp, wie es besser geht:

    Quellcode

    1. for (int i = 0; i < 1000; ++i)
    2. {
    3. if(i==100)
    4. {
    5. inj = 0;
    6. vmo = vm;
    7. }
    8. else if(i==500)
    9. {
    10. ....
    11. }
    12. float t = i/10.;
    13. ....
    Alles anzeigen
    C++