Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

17.11.2007, 16:05

*Preis-entgegen-nehm-und-verbeug* ;)

Wenn das "iRueckgabe++" da ist um die fehlende Rundung beim Casten auszugleichen (es wird immer abgerundet) solltest Du das etwas anders lösen. Es muss nämlich nicht immer ein Cent fehlen.

C-/C++-Quelltext

1
int iRueckgabe = (int)fRueckgabe*100 + 0.5f

sollte dagegen immer richtig sein.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

22

17.11.2007, 16:41

Hallo mahe,
hatte ich schon getestet aber klappt nicht.
Wenn ich es mit unterschiedlichen Werten füttere und immer um den Wert 1 erhöhe geht die Rechnung auf.

Aber das bunte ist ja, bei einer übergabe mit einem festen wert wie 0.40 oder 0.4 geht es ohne ++, wenn aber der Wert durch Usereingaben gemacht wird, kann er 0.4 sein aber trotzdem wird er um 1 gekürzt.

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

23

17.11.2007, 16:44

Ich glaube da fehlen einfach die Klammern.
Schonmal so probiert:
int iRueckgabe = (int)(fRueckgabe*100 + 0.5f);
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

24

17.11.2007, 17:21

Hallo Nox,
danke hat gefunkt ;)

Jetzt läuft es mit einem mahe/Nox Mix :o)

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

25

17.11.2007, 17:50

Ja, natürlich müssen da Klammern hin!
Hab ich übersehen :oops:

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

26

17.11.2007, 21:26

Zitat von »"T-VIRUS"«


Fragt nicht warum es nicht geht, aber ich werde mal meinen C(++) Lehrer fragen ;)

Anstatt den zu fragen könntest du dich einfach mal rudimentär mit der internen Darstellung von float beschäftigen und dann mal anschaun, warum es bei manchen Preisen abrundet und bei anderen nicht.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

27

18.11.2007, 16:35

Hallo grek40,
das Problem hatten wir doch gelöst.

Ich werde mal gucken woran es liegt.

Hab aber aus juks und dollerei mal eine C++ Version gemacht.
Diese ist auch schlicht und einfach gehalten.

Kritik des Codes ist erwünscht ;)

Zum Code...

Automat.hpp
http://rafb.net/p/lLcAmy42.html

Fahrkartenautomat.hpp
http://rafb.net/p/nxGxFK66.html

Fahrkartenautomat.cpp
http://rafb.net/p/eM5wOQ16.html

main.cpp
http://rafb.net/p/4FJHLY70.html

Ich denke die main.cpp kann ich noch um ein vielfaches verkleinern, da einige der Codes eher in die Automaten Klassen gehören.

Ich werde den src auch updaten ;)

EDIT
Hier die neue Version.

Automat.hpp
http://rafb.net/p/6mQDVT79.html

Fahrkartenautomat.hpp
http://rafb.net/p/Rp5nKL80.html

Fahrkartenautomat.cpp
http://rafb.net/p/mDq3w688.html

main.cpp
http://rafb.net/p/4FJHLY70.html

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

28

18.11.2007, 16:52

Ich kann nur nochmal wiederholen:
Bei Geldbeträgen sollte man niemals mit Fließkommazahlen rechnen! Du musst dir im klaren darüber sein, dass float und double nicht einmal so eine vermeintlich einfache Zahl wie 0.1 exakt darstellen können.
Einfach mit Integer und Cent rechnen.

T-VIRUS

Alter Hase

  • »T-VIRUS« ist der Autor dieses Themas

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

29

18.11.2007, 17:24

Hallo David,
okay ich werde mal schauen wie ich das lösen kann.

Das einzigste Problem wird nur, wenn der Benutzer eine Münze dann zahlen muss.
Dort muss ich zwangsläufig die Eingabe via float holen und später in Integer umrechnen.
Dies geschieht bereits in der ReturnMoney Methode des Automats.

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

30

18.11.2007, 17:35

Zitat von »"T-VIRUS"«

Das einzigste Problem wird nur, wenn der Benutzer eine Münze dann zahlen muss.
Dort muss ich zwangsläufig die Eingabe via float holen und später in Integer umrechnen.

Warum musst du da Float nehmen?

Werbeanzeige