der computer lügt
-
hallo
man sollte doch eigentlich meinen, dass 1/3 0,periode3 ist.
mein dummer computer gib aber aus:0.3333333432674407958984375
aber warum denn nur?
#include <iomanip> #include <iostream> using namespace std; int main() { float a; a = 1./3.; cout << fixed << setprecision(100) << a << endl; return 0; }
ein verändern des datentyps nutzt auchz nichts. ich brauche genaue werte.
compiler g++ unter linux
(hoffentlich hab ichs im richtigen subforum... nicht schimpfen wenn nicht
)
-
Der Computer kann 1/3 nicht exakt darstellen, sondern nur mit einer begrenzten Genauigkeit - also rundet er den Wert auf den nächsten darstellbaren.
(falls du weitere Infos suchst: Stichwort "Gleitkomma-Genauigkeit")
-
Dieser Thread wurde von Moderator/in evilissimo aus dem Forum Andere GUIs - Qt, GTK+, wxWidgets in das Forum Compiler-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
verwirrter schrieb:
ein verändern des datentyps nutzt auchz nichts. ich brauche genaue werte.
mit double sollte der Wert etwas genauer werden. Wenn du aber 100%ig genaue Werte brauchst, wirst du um einen eigenen Datentyp nicht herumkommen. Eine Klasse fuer rationale Zahlen (d.h. Bruchzahlen) sollte nicht allzu schwer sein, nur musst du dir dann auch alle Funktionen, die du brauchst (Potenzen, Trignometrie, ...) selbst implementieren muessen. Findest aber sicher auch im Netz geschriebene Klassen dafuer denk ich.
-
verwirrter schrieb:
hallo
man sollte doch eigentlich meinen, dass 1/3 0,periode3 ist.
mein dummer computer gib aber aus:0.3333333432674407958984375
aber warum denn nur?
#include <iomanip> #include <iostream> using namespace std; int main() { float a; a = 1./3.; cout << fixed << setprecision(100) << a << endl; return 0; }
ein verändern des datentyps nutzt auchz nichts. ich brauche genaue werte.
compiler g++ unter linux
(hoffentlich hab ichs im richtigen subforum... nicht schimpfen wenn nicht
)
Kann es sein das du über die (interne) Arbeitsweise eines Computers
Null Ahnung hast. Mit solchen Lücken im Grundlagenwissen wirst du mit
der Programmierung schnell an Grenzen stossen.
-
OhNo schrieb:
Kann es sein das du über die (interne) Arbeitsweise eines Computers Null Ahnung hast. Mit solchen Lücken im Grundlagenwissen wirst du mit
der Programmierung schnell an Grenzen stossen.Naja so wild isses nun auch wieder nicht.
Fehler gefunden, Fehler identifiziert, Fehler ergründen, Fehler beheben und damit hat sichs und du bist wieder schlauerZugegeben du solltest dir mal ein gutes buch über Rechner architektur anschaun.
Auf wunsch kann ich mal schaun was mein Prof da als Referenz angegeben hat.