Vergleich von long-Zahlen

Hi!

Folgendes Problem:
Ich programmiere eine Simulation von Arbeits- und Bedienzeiten von Maschinen und Arbeitern. Dies soll in einem Zeitraum von einer Minute bis 100 Jahre simuliert werden können. Betrachtet wird die ganze Situation jedoch immer im Sekundentakt. Das bedeutet, die vom Benutzer eingegebene Dauer in Minuten wird mit 60 multipliziert, um die Sekunden zu erhalten. Soweit ganz einfach!
Der Datentyp „int“ bietet mir dafür 2.147.483.647 Sekunden. Das entspricht jedoch nur maximal 68,3 Jahren. Bis 100 Jahre fehlen also noch paar. Darum musste ich für die Dauer und den aktuellen Zeitpunkt den Datentyp „long“ wählen.
Nun endlich zum Problem:
"for (t=1;t

Moien

"for (t=1;t

Moien

"for (t=1;t

Moien

Das dürfte einiges an Laufzeit erfordern. Bist du sicher … ?

Ich hab die Simulation mal für ein Jahr laufen lassen, das
geht schon recht fix. Dauert höchstens ne Minute. Also sind’s
für 100 Jahre knapp eineinhalb Stunden. Mal sehen.

Hängt von der Komplexität der Simulation ab. Ich würde den Zeitpunkt der nächsten Änderung für alle Teile in einem Array speichern (sortieren !) und dann zum jeweils 1. Zeitpunkt springen. Man muss dann natürlich die Abnutzungen, Werte, usw anders abrechnen können, sonst macht es keinen Sinn.

Bei der Zuweisung hat was nicht hingehauen:

public void setDa(int i) { da=i*60; }

da = i \* 60l

könnte schon reichen (nicht getestet)

Der Datentyp der rechten Seite wird immer unabhängig von der linken Seite ermittelt (kleinster/schnellster Möglicher) und dann erst in den der rechten Seite gewandelt.

cu