Taschenrechner programmieren mit C (Double und Nachkommastellen)

4 Antworten

Ein Integer ist eine Variable mit 32 Bit Länge. Somit wäre die größtmögliche Zahl, die man dort speichern könnte 4.294.967.295.

ABER: Es gibt ja auch negative Zahlen. Wenn in einer Variablen positive und negtive Zahlen gespeichert werden sollen, dann wird von den 32 Bit ein Bit für das Vorzeichen benötigt. Daher ist dann 2.147.483.647 der größtmögliche Wert. Addiert man nun zu dieser Zahl eine 1, dann wird auch das 32. Bit benötigt. Das ist aber für das Vorzeichen da. Also wird die Zahl plötzlich negativ.

Wenn Du mit größeren Zahlen rechnen möchtest, brauchst Du also einen Variablentyp mit 8 Byte Länge (also 64 Bit).

RamboxXx 
Fragesteller
 08.06.2012, 13:08

Und wie ändere ich das um ?
Das ist ja warscheinlich mit Double nur da ich ein Neuling bin habe ich kein wirklichen Plan.

0

Das liegt am Wertebereich von int. Bei 2147483647 ist auf deinem System offenbar Schluss; eine größere Zahl ist durch int nicht darstellbar. Wenn du dann 1 hinzuaddierst, fängt er intern bei der kleinsten darstellbaren Zahl wieder an.

Das kannst du entweder hinnehmen, oder auf einen Datentypen mit größerem Wertebereich ausweichen - wie du schon selbst sagst, double zum Beispiel.

Aus welcher Quelle lernst du eigentlich? Dir scheinen ja schon noch einige Grundlagen zu fehlen...

RamboxXx 
Fragesteller
 08.06.2012, 13:11

Sind ein paar Zettel die von nem Bekannten bekommen habe, leider sind sie sehr kompliziert geschrieben für einen Neuling und deswegen versteh ich nicht alles

0

Double wäre eine Lösung um Kommazahlen zu bearbeiten, anstatt deiner Integer. Was die 2147483647 angeht, dies ist die maximale Größe deines Datentyps und entspricht 32 Bit bzw. einer signed 32 Bit Zahl.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012

"außerdem kann dieser Rechner keine Kommazahlen berechnen", weil du Integer verwendest und Integer rechnet nur mit ganzen Zahlen. Möchtest du Kommazahlen berechnen, benötigst du den Double statt Integer.

RamboxXx 
Fragesteller
 08.06.2012, 13:06

Ich bin Neuling das ist das aller erste mal das ich was scripte..
könntest du mir sagen wie oder wo ich Integer ersetzen kann durch Double

0
RamboxXx 
Fragesteller
 08.06.2012, 13:25
@chaostheorie314

ich hab jetzt:
double Zahl1;
double Zahl2;
double Gesamt;
double Merker;
double Laenge;
double Stelle;

Dann erscheint aber ein error Code:
error C2108: Index ist kein Ganzzahltyp

Was ist jetzt falsch ?

0
chaostheorie314  08.06.2012, 15:22
@RamboxXx

Manche Funktionen können nur mit Integern umgehen, darauf musst du achten. Die musst du dann durch andere Funktionen / Vorgehensweisen ersetzen, die auch Double unterstützen.

0