Eintragsdetails ansehen
ID | Projekt | Kategorie | Sichtbarkeit | Meldungsdatum | Zuletzt aktualisiert |
---|---|---|---|---|---|
0002279 | Eressea | MACHE | öffentlich | 2017-02-04 16:35 | 2017-05-26 06:33 |
Reporter | EON | Bearbeitung durch | Enno | ||
Priorität | normal | Schweregrad | kleinerer Fehler | Reproduzierbar | nicht getestet |
Status | geschlossen | Lösung | erledigt | ||
Produktversion | 3.10.7 | ||||
Zielversion | 3.11 | Behoben in Version | 3.11 | ||
Zusammenfassung | 0002279: Zuviel Eisen aus der Region abgezogen | ||||
Beschreibung | Zwei meiner Zwerge mit T24 haben diese Woche (1011) in einem Bergwerk 50 Eisen produziert. Nach meinem Verständnis müssten 15 Eisen von der Region abgezogen werden (50 0,6 0,5) wegen Zwergenbonus und Bergwerk. Es wurden aber 16 abgezogen. | ||||
Tags | Keine Tags zugeordnet. | ||||
Partei | gLod | ||||
Spiel | E2 | ||||
Report | 1011 | ||||
Die Angabe einer Einheitennummer wäre gut. Ich hab auch einen ähnlichen Fall. Schüler von Ranvrim (nmho) in Xorlosch (0,0) produziert 360 Eisen. Eisen(34): 289 -109 3600,60,5=108 Das Bergwerk gibt ja +1 auf die Abbaumenge. Wird der Zwergenbonus darauf eventuell nicht angerechnet? Die Rechnung wäre dann: 3590,60,5+(1*0,5)=108,2 -> gerundet 109 Die Rechnung für EON: 480,60,5+(2*0,5)=15,4 -> gerundet 16 Würde zumindest das beobachtete Verhalten erklären. Das wäre nun vermutlich kein Beinbruch, aber gegen die in der Anleitung erklärte Regelung https://wiki.eressea.de/index.php/Andere_Geb%C3%A4ude#Bergwerk |
|
Stimmt, die Einheitennummer habe ich vergessen. Die betroffene Einheit ist Dorian (j682) |
|
Fließkommazahlen haben ja numerische Probleme. 0.3 * 50 = 15, sollte man denken, aber 0.3 ist so eine Zahl, die man nicht als Fliesskommazahl darstellen kann (0.6 entsprechend auch schon nicht). Es schleicht sich da so viel Fehler rein, dass am Ende 15.000000596046448 heraus kommt, und das ist mehr als 15, deshalb wird im klassischen Eressea-Stil aufgerundet auf 16. Fließkomma-Arithmetik ist ein Übel, das muss ich mal ausmerzen. Der Produktionscode ist aber leider eine Katastrophe, und total unübersichtlich. |
|
Wäre es nicht möglich, dem Fließkommaproblem zu entkommen indem zuerst multipliziert wird? Also Anzahl Eisen 5 (bei Bergwerk) 6 (bei Zwerg) und dann /10 bzw. 100? Im schlimmsten Fall ist das eine Multiplikation mit 30 vor der Division, das sollte den Zahlenraum eines Integers doch eigentlich nicht sprengen, oder? So gehen wir bei unseren Sensorknoten an das Problem heran, allerdings schneiden wir dann auch bei der Division einfach ab, was für Eressea eher unpassend wäre ;-) |
|
Wenn man keine Kommazahlen verwendet, hat man kein Problem mit Kommazahlen, das ist schon richtig. Leider hat der Code sich das nicht zu Herzen genommen, und die Produktion von Ressourcen ist ungemein kompliziert. economy.c, wo der Großteil davon drin steckt, hat 3160 Zeilen. Das kriegt man nicht leicht geändert. Da runde ich evtl. einfach lieber alles ab, und nehme Fehler in der anderen Richtung in Kauf. |
|
Nochmal für mich selbst zum merken:
|
|
Ich habe jetzt einen unit-test, der das reproduziert. |
|
Den Fliesskomma-Mist kriege ich da auf die Schnelle nicht raus, aber ich kann an der Rechnung ein bisschen wackeln, bis meine Tests passen. Das gefällt mir natürlich nicht, aber es scheint zu klappen. Da ich deinen Report von vorher nicht habe, bin ich darauf angewiesen, dass Du mir bestätigst, ob das jetzt so stimmt: Dorian (j682) in Eisenwacht (2,-3) produziert 50 Eisen. Eisenwacht (2,-3), Berge, 1464 Steine/20, 33 Eisen/23, ... bzw. bei Xolgrim: Schüler von Ranvrim (nmho) in Xorlosch (0,0) produziert 360 Eisen. Xorlosch (0,0), Berge, 290 Eisen/34 |
|
PR https://github.com/eressea/server/pull/656 (wartet nur noch auf Bestätigung, dass das Ergebnis so okay ist). |
|
@Enno: Aus dem Report von 1011: Xorlosch (0,0), Berge, 289 Eisen/34 Bei dir wäre also das weg gerundete Eisenerz. Von meiner Seite ok. |
|
Eine Geschichte fällt mir noch auf: Einige Gebäude geben zwar +1 auf das Talent, aber das wird nicht mit eingerechnet in der Frage, ob die Einheit einen Gegenstand produzieren kann. Das ist aber scheinbar egal, weil alle Rohstoffe ein Minimal-Talent von 1 haben. |
|
Änderung ist akzeptiert. |
|
PR, der Fließkomma-Dreck durch Brüche ersetzt: https://github.com/eressea/server/pull/657 |
|
Die Version 3.11 ist historisch, alle gefixten Bugs scheinen keine Probleme zu haben. |
|
Änderungsdatum | Benutzername | Feld | Änderung |
---|---|---|---|
2017-02-04 16:35 | EON | Neuer Eintrag | |
2017-02-04 19:54 | Xolgrim | Notiz hinzugefügt: 0006951 | |
2017-02-04 20:10 | EON | Notiz hinzugefügt: 0006952 | |
2017-02-13 15:14 | Enno | Bearbeitung durch | => Enno |
2017-02-13 15:14 | Enno | Status | neu => zugewiesen |
2017-02-13 16:50 | Xolgrim | Notiz bearbeitet: 0006951 | |
2017-02-13 20:44 | Enno | Notiz hinzugefügt: 0006964 | |
2017-02-13 21:00 | EON | Notiz hinzugefügt: 0006967 | |
2017-02-13 21:04 | Enno | Notiz hinzugefügt: 0006968 | |
2017-02-15 20:50 | Enno | Notiz hinzugefügt: 0006974 | |
2017-02-15 20:51 | Enno | Notiz hinzugefügt: 0006975 | |
2017-02-15 21:14 | Enno | Notiz hinzugefügt: 0006976 | |
2017-02-15 21:18 | Enno | Notiz hinzugefügt: 0006977 | |
2017-02-16 07:50 | Xolgrim | Notiz hinzugefügt: 0006978 | |
2017-02-16 20:10 | Enno | Notiz hinzugefügt: 0006979 | |
2017-02-16 20:53 | Enno | Status | zugewiesen => erledigt |
2017-02-16 20:53 | Enno | Lösung | offen => erledigt |
2017-02-16 20:53 | Enno | Behoben in Version | => 3.11 |
2017-02-16 20:53 | Enno | Notiz hinzugefügt: 0006980 | |
2017-02-17 22:07 | Enno | Notiz hinzugefügt: 0006981 | |
2017-02-26 20:42 | Enno | Produktversion | => 3.10.7 |
2017-02-27 11:02 | Enno | Zielversion | => 3.11 |
2017-05-26 06:33 | Enno | Notiz hinzugefügt: 0007226 | |
2017-05-26 06:33 | Enno | Status | erledigt => geschlossen |