Autor Beitrag
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Fr 01.07.11 13:33 
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.

ausblenden 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(02);
            else
                zeit = stunden.ToString() + "," + "0";

            return zeit;
        }

_________________
Gruß Markus
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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 ;)

ausblenden C#-Quelltext
1:
2:
3:
4:
public string dezimalZeit(int minuten)
{
    return new TimeSpan(0, minuten, 0).TotalHours.ToString();
}

Für diesen Beitrag haben gedankt: m-s
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 ;) .
ausblenden C#-Quelltext
1:
2:
3:
4:
    public static string DezimalZeit(int minuten)
    {
      return (Math.Ceiling(minuten / 5.0) / 12).ToString();
    }

_________________
>λ=

Für diesen Beitrag haben gedankt: m-s
m-s Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: 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.

_________________
Gruß Markus