Veröffentlicht 25. Februar 200322 j 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
25. Februar 200322 j 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
25. Februar 200322 j 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!!
25. Februar 200322 j 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 +-*/).
25. Februar 200322 j 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?
25. Februar 200322 j 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
25. Februar 200322 j 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
25. Februar 200322 j 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
25. Februar 200322 j 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...
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.