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).