Marko Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 hallo, ich würde gerne den rest an die erste stelle von einer zahl legen z.b. rest=39 zahl= 12345678 ergebnis=3912345678 doch bei der berechnung: rest*=100000000; kommt das ergebnis: -394967296 raus alle variablen sind long kann es so viele nullen nicht anzeigen oder warum klappt das nicht?! schlöne grüsse marko Zitieren
Guybrush Threepwood Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Hi, bei deiner Rechnung hat ein Überlauf stattgefunden, da long so große Zahlen nicht erfassen kann. Bsp.: Wenn long von -34 bis +34 gehen würde und als Ergebnis 35 rauskäme, dann wäre der Wert in der long Variable -34. Versuchs anstatt mit long, mal mit float oder double. Gruß Guybrush Zitieren
Marko Geschrieben 25. Februar 2003 Autor Geschrieben 25. Februar 2003 danke für deine antwort, ich habe es mit float und double versucht->geht aber nicht! es muss doch ne möglichkeit geben so eine zahl anzeigen zu lassen....so lang ist sie nun auch wieder nicht!! Zitieren
Crush Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Ja, ist nur ein Überlauf. Schreib doch einfach unsigned long, dann paßt´s doch - Du verlierst dabei nur die negativen Zahlen. Ansonsten müßtest Du entweder eine fertige Bigint-Klasse für übergroße Zahlen verwenden oder einfach selber schreiben (ist eine gute Übung für das Zahlenverständnis bei +-*/). Zitieren
Guybrush Threepwood Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Originally posted by Marko danke für deine antwort, ich habe es mit float und double versucht->geht aber nicht! es muss doch ne möglichkeit geben so eine zahl anzeigen zu lassen....so lang ist sie nun auch wieder nicht!! Doch, float und double gehen beide. Wie gibst du die Zahl den aus? Zitieren
Crush Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Beim float gehen aber ein paar Stellen für den Exponenten drauf. Zitieren
Marko Geschrieben 25. Februar 2003 Autor Geschrieben 25. Februar 2003 ok alles klar ich habs jetzt!! @Crush genau das wars mit dem unsigned, ich habe jetzt unsigned long genommen!! erst gings trotz dem nicht aber dann habe ich Guybrush Threepwood tipp mit der ausgabe befolgt, ich habe es mit printf ausgegeben bin dann zu cout gewechselt, dann ging es....habe bestimmt bei der formatierten ausgabe was falsch gemacht!! vielen dank an alle die geantwortet haben!! :marine Zitieren
Guybrush Threepwood Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Genau, du hast es bestimmt so ausgegeben: printf ("%i",Variable); durch das %i wird deine Variable aber als integer interpretiert und dessen Zahlenbereich ist dafür ja zu klein. Mit %lf wäre es aber gegangen. Gruß Guybrush Zitieren
Marko Geschrieben 25. Februar 2003 Autor Geschrieben 25. Februar 2003 printf("%d",variable); das wars, wie auch immer.....vielen dank für die hilfe!! Zitieren
nic_power Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Originally posted by Crush Ja, ist nur ein Überlauf. Schreib doch einfach unsigned long, dann paßt´s doch - Du verlierst dabei nur die negativen Zahlen. Ansonsten müßtest Du entweder eine fertige Bigint-Klasse für übergroße Zahlen verwenden.... Nicht zwingendermaßen, bei 64 Bit-Architekturen ist es durchaus üblich, dass ein long 64 Bit hat. Nic Zitieren
Crush Geschrieben 25. Februar 2003 Geschrieben 25. Februar 2003 Stimmt. Allerdings hat er auch geschrieben, daß das unsigned das Problem auch beheben konnte, also ist ein 32-Bit-Prozessor eingebaut ... sorry, meistens geh ich von meiner Kiste aus - hab halt dieses mal Glück gehabt =8-) Vielleicht sollte man zukünftig den C++-Postings immer mit sizeof(Datentyp) abchecken ob der Prozessor von 32-Bit abweicht... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.