Entwickler-Ecke
C# - Die Sprache - Dezimal Zeit
m-s - Fr 01.07.11 13:33
Titel: Dezimal Zeit
Ich habe heute mal wieder ne halbe Stunde vergeudet weil ich einen Fehler gesucht und erst so langsam gefunden habe :)
Ich habe eine Methode, die mir Minuten in Dezimalzeit umrechnet (und dabei noch auf glatte 5 Minuten aufrundet). Also eine Stunde und 15 Minuten sind ja 75 Minuten, das macht dann in Dezimalzeit 1,25.
Die Methode ist mir immer abgestürzt mit dem Hinweis out of Index.
Ich habe dann festgestellt das bei glatten 120 Minuten zwar in der Variablen rest 0.0 steht, aber intern das anscheinend als 0 gehandhabt wird.
Na ich dachte, falls es jemandem auch so geht :) durch ergänzen der If Abrfrage am Schluss läuft wieder alles.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| public string dezimalZeit(int minuten) { string zeit =""; int stunden = 0; double rest = 0; double komma = 0;
while ((minuten % 5) != 0) { minuten = minuten + 1; } stunden = minuten / 60; rest = minuten % 60; komma = rest / 60;
if (rest != 0) zeit = stunden.ToString() + "," + komma.ToString().Remove(0, 2); else zeit = stunden.ToString() + "," + "0";
return zeit; } |
Ralf Jansen - Fr 01.07.11 15:00
Für solche Berechnungen bittet sich die TimeSpan Klasse an.
Da das eine ausgiebigst getestete Klasse aus dem Framework ist ist die Wahrscheinlichkeit von Fehlern deutlich geringer als in einer Handmade Methode ;)
C#-Quelltext
1: 2: 3: 4:
| public string dezimalZeit(int minuten) { return new TimeSpan(0, minuten, 0).TotalHours.ToString(); } |
Kha - Fr 01.07.11 16:32
Ralf hat natürlich völlig Recht, aber ich will dir nicht verheimlichen, dass sich dein Code noch etwas verkürzen lässt ;) .
C#-Quelltext
1: 2: 3: 4:
| public static string DezimalZeit(int minuten) { return (Math.Ceiling(minuten / 5.0) / 12).ToString(); } |
m-s - Sa 02.07.11 12:37
Oh mann,
wenn ich sowas sehe, dann grault es mir vor so vielen meiner CodeGebilde.
Ich habe den Code jetzt in meine Anwendung übernommen (einfach weil ich denke das es schneller und sicherer ist) muss aber meinen kommentiert stehen lassen, weil ich sonst nicht wüsste was da gemacht wird.
Vermutlich könnte ich 90% des Codes in meinen Programmen einsparen, wenn ich mehr wissen würde.
Na ja, vielen Dank.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!