Problem mit Taschenrechner der cmath nutzt
-
Das ist nicht richtig. Double hat als Fließkommazahl keinen "festen Wertebereich" oder "feste Anzahl Stellen". Strenggenommen.
Ein Fließkommawert wird als Mantisse + Exponent gespeichert. Bildlich ausgedrückt eine Ziffernfolge (deren Länge die tatsächliche Stellenzahl angibt) und eine Angabe wo in dieser Ziffernfolge das Komma steht.
Mal angenommen der Exponent hätte die Basis 10 und die Mantisse 5 Stellen, dann wäre "01234+000" die Zahl 1234. "01234-010" wäre 0,0000001234, "01234+003" wäre 1234000. Das ist wichtig, weil die Genauigkeit "weiter rechts" abnimmt, je größer die Zahl nach links driftet. In diesem Modell wären 10000,1 und 10000,2 schon identisch (beide "10000+000").
Alles völlig unwissenschaftlich und anschaulich, bitteschön

Korrekturen willkommen
-
Ich habe mir nun anderweitig geholfen. Ist vielleicht nicht die goldene Lösung, erfüllt aber seinen Zweck und ist eine mir bekannte Variante

cout << endl << "Das Ergebnis der Operation ist: " << c; cout << endl << fixed << setprecision(2) << "Auf zwei Stellen gerundet: " << c;
-
LordJaxom schrieb:
Das ist nicht richtig. Double hat als Fließkommazahl keinen "festen Wertebereich" oder "feste Anzahl Stellen". Strenggenommen.
Strenggenommen hat ein double wohl einen festen Wertebereich. Daten typen haben immer einen festen Wertebereich. Daß dieser Wertebereich allerdings im Falle von double nicht durch eine feste Anzahl Stellen festgelegt ist, ist natürlich richtig.
-
Ja, mir ist auch aufgefallen dass meine Beschreibung auch genau auf "feste Anzahl Stellen" passt, nur mit variablem Komma

Aber ihr wisst ja wie's gemeint ist...
-
t1m0n schrieb:
Ich habe mir nun anderweitig geholfen. Ist vielleicht nicht die goldene Lösung, erfüllt aber seinen Zweck und ist eine mir bekannte Variante

Na bitte, er hat doch selber herausgefunden, wie die "formatierte Ausgabe" klappt

-
CStoll schrieb:
t1m0n schrieb:
Ich habe mir nun anderweitig geholfen. Ist vielleicht nicht die goldene Lösung, erfüllt aber seinen Zweck und ist eine mir bekannte Variante

Na bitte, er hat doch selber herausgefunden, wie die "formatierte Ausgabe" klappt

Ist das genau die Variante die ihr meintet??? Wenn ja hab ich auch mal einen blinden Treffer ohne Google (nur mit Buch) gelandet

-
Das ist eine mögliche Variante - je nach Bedarf könntest du noch an der Genauigkeit der Ausgabe (setprecision()) schrauben oder doch auf wissenschaftliche Darstellung wechseln (dann müsstest du dir eine eigene Genauigkeitsgrenze definieren und alles darunter auf 0 setzen: "if(c<epsilon) c=0;")
-
CStoll schrieb:
"if(c<epsilon) c=0;")
Was bedeutet das? Hab öfters schon von EPSILON gehört aber nichts genaueres in Tutorials erfahren. Kannst das mal erläutern oder einen Link geben?
-
"epsilon" mußt du selber definieren als eine recht kleine Zahl - die obige Anweisung setzt alles, was unter dem vorgegebenen Wert liegt, auf 0 (OK, in manchen Situationen mußt du tatsächlich mit so kleinen Werten arbeiten, aber das ist selten).
-
Bezüglich epsilon noch zwei Links zur weiteren Aufklärung.
http://de.wikipedia.org/wiki/Epsilon (Bereich Mathematik)
http://de.wikipedia.org/wiki/Epsilontik (Epsilontik)
-
t1m0n schrieb:
Wenn ja hab ich auch mal einen blinden Treffer ohne Google (nur mit Buch) gelandet

Welches Buch hast du? Ich suche nämlich noch eins, als Ergänzung zu "C++ für Kids".
-
C/C++ von Ulrich Kaiser. Da steht alles drin. Wenn du durch bist, hast du u. a. eine Enigma und ein Mensch-ärgere-dich-nicht-Spiel programmiert (als selbstständig zu lösende Aufgaben!). Kostet ca. sclappe 50 Euro.
-
TheExecut0r schrieb:
t1m0n schrieb:
Wenn ja hab ich auch mal einen blinden Treffer ohne Google (nur mit Buch) gelandet

Welches Buch hast du? Ich suche nämlich noch eins, als Ergänzung zu "C++ für Kids".
Ich habe MagnumC++ empfohlen bekommen: http://www.amazon.de/exec/obidos/ASIN/3827269059/qid=1144756342/sr=1-1/ref=sr_1_2_1/302-3946339-8497661
Bei eBay gibts das teilweise schon ab EUR 12,95 weil Mängelware. Unifachbuch o.Ä. heißt der Powerseller...
-
t1m0n schrieb:
CStoll schrieb:
Was liefert er sonst? (und welchen Eingabewert verwendest du?)
Ich verwende 90, wovon halt der Cosinus 0 ist. Aber mein Programm spuckt aus: 6,12303e-017
Du hast recht 0,00000000000000000612303 ist verdammt weit weg von der 0
