Hallo,
ich habe jetzt schon eine Weile probiert und finde es einfach nicht heraus.
Ich gebe eine Zeiteinheit an: 5 Minuten
Jetzt möchte ich, dass er bei x0-x4 abrundet auf 0 und von x5-x9 auf 5 abrundet. x kann entsprechend einer Stunde die Werte 0 bis 5 annehmen. x= 5 also :55 - :59 letzter Block der Stunde.
Wenn ich aktuelle Minute (Modulo %) 5 mache bekomme ich 5 Minuten Blöcke bei x0 und x5 Ergebnis 0 ansonsten die Reste.
Ab dann ist aber Schluss... Ich weiß nicht, wie ich es von einander separieren soll und dann auch noch bei den höheren x > 0 also bei 30 oder 35 Minuten.
VG S
Du meinst
int roundedMinutes = 5 * (minutes / 5);
(also Division statt Modulo)?!
eher so:
00 -> 00
01 -> 00
02 -> 00
03 -> 00
04 -> 00
05 -> 05
06 -> 05
07 -> 05
08 -> 05
09 -> 05
10 -> 00
11 -> 00
12 -> 00
13 -> 00
14 -> 00
15 -> 05
16 -> 05
17 -> 05
18 -> 05
19 -> 05
... -> ...
Dann doch mit Modulo:
int roundedMinutes = 5 * ((minutes % 10) / 5);
Das funktioniert nicht. Das kommt immer nur 0 und 1 im Wechsel raus.
Das scheint zu klappen:
int roundedMinutes = 5 * Math.Floor((minutes % 10) / 5);
Dann hast Du etwas anderes falsch gemacht, die Rechnung von Th69 funktioniert.
for (var i = 0; i < 100; i++)
{
var j = 5 * ((i % 10) / 5);
Console.WriteLine($"{i:00} => {j:00}");
}
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Ja das geht doch so.
& wie wäre es bei?
00 -> 00
01 -> 00
02 -> 00
03 -> 00
04 -> 00
05 -> 05
06 -> 05
07 -> 05
08 -> 05
09 -> 05
10 -> 10
11 -> 10
12 -> 10
13 -> 10
14 -> 10
15 -> 15
16 -> 15
17 -> 15
18 -> 15
19 -> 15
... -> ...
Ich komme mit den Zeiten nicht klar.
(i / 5) * 5
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
So funktioniert es:
normalized_minute = 10 * math.floor(minute / 10) + 5 * math.floor((minute % 10) / 5)
Danke für die Hilfe!
Also das funktioniert bei mir:
for (int i = 0; i < 100; i++)
{
int j = 5 * (i / 5);
Console.WriteLine($"{i:00} => {j:00}");
}
und raus kommt das gleiche wie bei dir:
00 => 00
01 => 00
02 => 00
03 => 00
04 => 00
05 => 05
06 => 05
07 => 05
08 => 05
09 => 05
10 => 10
11 => 10
12 => 10
...
83 => 80
84 => 80
85 => 85
86 => 85
87 => 85
88 => 85
89 => 85
90 => 90
91 => 90
92 => 90
93 => 90
94 => 90
95 => 95
96 => 95
97 => 95
98 => 95
99 => 95
Sollte nicht auch folgendes zum Ergebnis führen
var minute = 7; // nur z.B.
var gerundet = minute - (minute % 5); // 5 = 7 - (7 % 5)
Joa - kann man drüber streiten, was besser ist. Ich finde Division intuitiver, aber naja.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.