Konvertierung double2int
-
Hallo Zusammen,
Ich habe 2 double Werte die Zeitstempel enthalten. Diese möchte ich subtrahieren
und die Differenz in ms erhalten.tempDeltaTime, can.Time und LastTime sind vom Typ double.
can.DeltaTime ist vom Typ int.tempDeltaTime = ((can.Time*1000) - (LastTime*1000)); can.DeltaTime = (int)tempDeltaTime; LastTime = can.Time;
Bsp:
can.Time = 0.0031080 //3,1080ms
LastTime = 0.0028410 //2,8410ms
(Die Zeitstempel haben später auch größere Werte im Sekunden Bereich.)Hier wäre mein Ziel für can.DeltaTime = 1 zu erhalten.
Es kommt aber 0 heraus.Wie kann ich das beheben?
Für Tipps bin ich sehr dankbar
.
-
can.Time = 0.0031080 //3,1080ms LastTime = 0.0028410 //2,8410ms tempDeltaTime = ((can.Time*1000) - (LastTime*1000)); // tempDeltaTime = 0,267 can.DeltaTime = (int)tempDeltaTime; // zuerst der cast, also 0 LastTime = can.Time;
Somit alles richtig gerechnet.
Die Frage ist, was du willst:
Soll der Wert ab 0,5ms aufgerundet werden oder schon ab 0,0001ms oder oder oder?can.Time = 0.0031080 //3,1080ms LastTime = 0.0028410 //2,8410ms can.DeltaTime= (int)((can.Time*1000) - (LastTime*1000) + 500); // so sollte es (ungetestet) für den ersten genannten Fall gehen can.DeltaTime= (int)((can.Time*1000) - (LastTime*1000) + 999); // so sollte es (ungetestet) für den zweiten genannten Fall gehen LastTime = can.Time;
Edit:
Wobei ich mir die Frage stelle, woher du einen Timestamp als Float bekommst?
-
Den timestamp lese ich aus einem file ein.
can.Time = atof(ptr);
Mein Ziel wäre es für DeltaTime 1 ms zu erhalten. die Mikrosekunden können abgeschnitten werden. Es ist kein Runden notwendig.
-
Das hängt von deinem Compiler ab. Es gibt da seit C90 ceil