Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: VCL (C++ Builder) ::  Nicht float, sondern decimal  
Gehen Sie zu Seite 1, 2, 3  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
FDX
Unregistrierter




Beitrag FDX Unregistrierter 14:55:37 05.03.2010   Titel:   Nicht float, sondern decimal            Zitieren

In C++Builder soll es den Datentyp decimal geben. Ich möchte mathematisch korrekt rechnen und float ist bei der Aufsummierung von Nachkommestellen nicht wirklich korrekt. Ich würde mir mit decimal bessere Ergebnisse erhoffen, finde aber den Datentyp nicht. Benötigt man eine extra Klasse dafür? Hat jemand ein Beispiel?
akari
Moderator

Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11271
Beitrag akari Moderator 15:04:34 05.03.2010   Titel:              Zitieren

Hallo

In Builder gibt es den Datentyp Currency, der eine Festkommazahl darstellen soll.
Ich würde aber empfehlen lieber int oder __int64 zu verwenden, und lieber in Cent-Werten statt in Euro-Werten zu rechnen.

bis bald
akari

_________________
In der nächsten Version wird alles besser!
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 24352
Beitrag volkard Moderator 16:03:15 05.03.2010   Titel:              Zitieren

akari schrieb:
Hallo

In Builder gibt es den Datentyp Currency, der eine Festkommazahl darstellen soll.
Ich würde aber empfehlen lieber int oder __int64 zu verwenden, und lieber in Cent-Werten statt in Euro-Werten zu rechnen.

bis bald
akari

Decimal hat nichts mit Korrektheit zu tun - es geht um Nachvollziehbarkeit.
Problem 1: Kannst Dich auf den Kopf stellen, wenn Du 1000000000 Euro fair auf drei Parteien verteilen sollst, macht ein Cent verschwindibus.
Problem 2: Es gibt Fälle, wo man gar nicht gut vorhersagen kann, von wo er verschwindet.
Und jetzt haben sich Kunden b4eschwert, daß das Programm falsch rechnet. Da kann man nur Decimal nehmen, denn wenn der Chef, der von Diskreter Mathematik oder von der internen Darstellung von Fließkommazahlen nach IEEE keinebn Schimmer hat, zu Dir geht, und mal genau wissen will, wohin der Cent verschwunden ist, was machste da? Ihn erst auf ne Vorlesung zu DM schicken? Oder sagen "Lies erstmal http://de.wikipedia.org/wiki/Gleitkommazahl . Erst danach bin ich bereit, mich mit Dir darüber zu unterhalten." Nö, ich denke, das wäre nicht so toll.
Decimal bringt's, denn nun rechnet der Rechner bis in die letzte Stelle wie in der Grundschule und ist Chefkompatibel. Fehler kann man jagan, nachvollziehen und erklären.

Aber Decimal ist nicht korrekter als was anderes. Es ist nur für Außenstehende leichter nachzuvollziehen, dafür frißt es 10-mal mehr Rechenzeit.

_________________
http://www.venganza.info/
plonk fürs Forum v1.02


Zuletzt bearbeitet von volkard am 16:05:20 05.03.2010, insgesamt 1-mal bearbeitet
witte
Mitglied

Benutzerprofil
Anmeldungsdatum: 08.01.2008
Beiträge: 1295
Beitrag witte Mitglied 17:30:10 05.03.2010   Titel:              Zitieren

volkard schrieb:
Decimal hat nichts mit Korrektheit zu tun - es geht um Nachvollziehbarkeit.
Problem 1: Kannst Dich auf den Kopf stellen, wenn Du 1000000000 Euro fair auf drei Parteien verteilen sollst, macht ein Cent verschwindibus.
Und wie löst das decimal? In dem es dir sagt dass du einen Cent durchzusägen hast?
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 24352
Beitrag volkard Moderator 19:35:03 05.03.2010   Titel:              Zitieren

witte schrieb:
volkard schrieb:
Decimal hat nichts mit Korrektheit zu tun - es geht um Nachvollziehbarkeit.
Problem 1: Kannst Dich auf den Kopf stellen, wenn Du 1000000000 Euro fair auf drei Parteien verteilen sollst, macht ein Cent verschwindibus.
Und wie löst das decimal? In dem es dir sagt dass du einen Cent durchzusägen hast?

Indem es sich ganz normal verrechnet, nämlich nicht anders, als der Chef, der es auf einem Blatt Papier mal nachrechnet.

_________________
http://www.venganza.info/
plonk fürs Forum v1.02
Braunstein
Mitglied

Benutzerprofil
Anmeldungsdatum: 16.05.2002
Beiträge: 6734
Beitrag Braunstein Mitglied 20:50:34 05.03.2010   Titel:              Zitieren

Wenn euch das Thema Festkommaarithmetik so interessiert habe ich hier mal zwei Links für euch
Allgemeine Erläuterung
http://en.wikipedia.org/wiki/Fixed-point_arithmetic
Die englische Version ist besser als die deutsche.

und hier etwas schöner (ganz oben)
http://www.digitalsignallabs.com/papers.htm
-=]xXx[=-
Mitglied

Benutzerprofil
Anmeldungsdatum: 15.04.2003
Beiträge: 456
Beitrag -=]xXx[=- Mitglied 13:02:05 07.03.2010   Titel:              Zitieren

Da schließt sich für mich mal eine Frage an:
Wenn ich eine Rechnung schreibe über einen Artikel für 2,99€ zzgl. 19% Steuer und davon 100Stk., wie berechne ich die Steuer richtig?

A)
2,99€*0,19 = 0,57€
0,57€ * 100Stk. = 57€

oder

B)
2,99€*100*0,19 = 56,81€

mfg
xXx

_________________
Wer nichts macht, macht auch nichts falsch!
Jansen
Moderator

Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 14520
Beitrag Jansen Moderator 14:03:26 07.03.2010   Titel:              Zitieren

Die Mehrwertsteuer wird auf die Gesamt-Nettosumme einer Rechnung erhoben, also B.

_________________
Jansen (Mod nur im BCB-Forum)
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 24352
Beitrag volkard Moderator 15:09:52 07.03.2010   Titel:              Zitieren

-=]xXx[=- schrieb:
Da schließt sich für mich mal eine Frage an:
Wenn ich eine Rechnung schreibe über einen Artikel für 2,99€ zzgl. 19% Steuer und davon 100Stk., wie berechne ich die Steuer richtig?

A)
2,99€*0,19 = 0,57€
0,57€ * 100Stk. = 57€

oder

B)
2,99€*100*0,19 = 56,81€

Scherzkeks.
2,99*100/0,81=369,14
369,14-2,99*100=70,14

_________________
http://www.venganza.info/
plonk fürs Forum v1.02
KlausB
Moderator

Benutzerprofil
Anmeldungsdatum: 02.04.2001
Beiträge: 2321
Beitrag KlausB Moderator 17:01:55 07.03.2010   Titel:              Zitieren

Hallo

noch besserer Scherzkeks :D

2,99 * 100 = 299,00
MwSt = 299,00 * 0,19 = 56,81
ges: 355,81

:cool:

Mfg
Klaus
C/C++ Forum :: VCL (C++ Builder) ::  Nicht float, sondern decimal  
Gehen Sie zu Seite 1, 2, 3  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.