Zum Inhalt springen

komisches ergebnis


Marko

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 +-*/).

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...