Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Float to Seconds


LittleBen - Mo 22.08.11 17:21
Titel: Float to Seconds
Hallo,
bei dieser Umrechnung stehe ich gerade auf dem Schlauch:
Eine Float-Variable beinhaltet den Wert 3,23. Das soll in Minuten 3:23 ergeben. Jedoch brauche ich das ganze in Sekunden, aber in einen Integer! Also 3,23*60. Die ganze Berechnung würde ja nur mit Round, Trunc etc. funktionieren, doch einen gerundeten Wert kann ich nicht gebrauchen.
Habt ihr eine Lösung, wie ich 3,23 in 3:23 bekomme?

Vielen Danke!
Benny


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 23.08.2011 um 09:35


FinnO - Mo 22.08.11 17:35

Moin,

mal ohne das ausprobieren zu können: 3,23 in 3:23:

Erstmal würde ich die zahl abrunden:

Delphi-Quelltext
1:
minutes := floor(3.23//= 3                    

diese Zahl zieht man von der ersten Zahl ab und multipliziert sie mit 100:

Delphi-Quelltext
1:
seconds := (3.23 - minutes)*100// seconds = 23; minutes = 3;                    



die ausgabe sollte man dann hinkriegen.


LittleBen - Mo 22.08.11 17:42

Seconds ist doch kein Integer? :gruebel:


FinnO - Mo 22.08.11 19:00

wieso nicht? Wenn kein Integer, dann zumindest eine ganze zahl und die kann man formell runden...


BenBE - Mo 22.08.11 20:33


Delphi-Quelltext
1:
Result := 100*Frac(X) + 60*Floor(X);                    


buster - Di 23.08.11 07:01

...mal ganz davon abgesehen, dass 3,23 Minuten nicht 3 Minuten und 23 Sekunden sind... es sei denn, die Eingabe ist so gewollt, dann darfst du aber keine Werte > 59 in den Nachkommastellen zulassen ;)