Einloggen mit Benutzername, Passwort und Sitzungslänge

Autor Thema: Zwischenmahlzeiten werden nicht verbraucht  (Gelesen 4008 mal)

Finnegan

  • Legende
  • *****
  • Beiträge: 569
  • Charakter: Finnegan
Zwischenmahlzeiten werden nicht verbraucht
« am: Juni 10, 2014, 04:47:08 Nachmittag »
Irgendwo ist da ein Fehler in der Berechnung der verwendbaren Zwischenmahlzeiten. Nachdem meine LP sowieso kürzlich gepostet wurden, brauche ich mir auch keine Fantasie-Zahlen ausdenken, sondern kann mit echten Zahlen beschreiben:

Ich hatte gestern 61,9 Nahrungsmittel (davon 2,9 ZM), und habe heute nacht 5,9 verbraucht. Demnach bin ich jetzt bei 56. Nur sind von diesen 56 jetzt noch 1,0 ZM, was ja so nicht sein dürfte.
Ist offenbar immer dann so, wenn man die "richtige" Nachkomma-Menge an Zwischenmahlzeiten hat. Hätte ich vorher 2,95 oder 3,0 ZM gehabt, hätte ich jetzt nur noch 0,05 bzw. 0,1.
Ich dachte eigentlich, ich hätte das auch irgendwann schon mal gemeldet, aber ich habs jetzt nicht mehr gefunden...

Antw:Zwischenmahlzeiten werden nicht verbraucht

FelixAquila

  • Global Moderator
  • Legende
  • *****
  • Beiträge: 1.172
  • Charakter: FelixAquila
Antw:Zwischenmahlzeiten werden nicht verbraucht
« Antwort #1 am: Juni 11, 2014, 11:24:52 Vormittag »
Spontan würde ich vermuten, dass es ein Problem mit den verwendeten Zahlentypen gibt, so dass Rundungsfehler entstehen. 61,9 sind intern möglicherweise 61,89999999999, und wenn man dann 5,9 abzieht, landet man bei 55,99999999999. Das wird zwar als 56 angezeigt, aber zur Berechnung der Zwischenmahlzeiten wird wahrscheinlich der Nachkommawert verwendet, und der ist nicht 0, sondern 0,99999999999, also gerundet 1.

Passiert gerne mal, wenn man Gleitkommazahlen auf Gleichheit testet, statt sie auf Gleichheit innerhalb der Fehlertoleranz zu prüfen. (a=b statt |a-b|<10^-8).