Begi



  • Hallo kann mir einer sagen wie ich einen floatwert in einen int konvertiere

    folgendes schlägt fehl, dPeriode und nCycles bleiben auf 0

    double dPeriod = 0;
    double dCycleIntervall = 500;
    int nCycles = 0;
    m_nRatedSpeed = 100;
    
    dPeriod  = (1 / m_nRatedSpeed) * 1000;				
    nCycles	= (int)(dCycleIntervall / dPeriod);
    

    danke



  • C hat die schöne Eigenart, dass es ein Ergebnis in einen Integer umwandelt, wenn in der Berechnung durch einen Integer geteilt wird. In deinem Fall heißt das, dass die Berechnung (1 / m_nRatedSpeed) nicht die erwarteten einhundertstel hervorbringt, sondern 0, denn 0,01 ist nun mal ohne die Kommastellen einfach 0.

    Um dein Problem zu lösen, gibts zwei Möglichkeiten. Entweder du änderst den Typ m_nRatedSpeed in eine Kommazahl um oder du musst bei deiner Berechnung m_nRatedSpeed mal 1.0 nehmen (am besten in Klammern, also (m_nRatedSpeed * 1.0)).

    Wenn bei deiner zweiten Berechnung ein Wert kleiner als 1 rauskommt, dann wird in nCycles auch eine 0 rauskommen (nur falls das mal passieren sollte und du das nicht im Sinn hast).


Anmelden zum Antworten