Rechnung
-
double var; var=1/4+1/4; Ergebnis : var =0; Warum kommt da nicht 0.5 raus ??
-
Weil 1/4 eine Ganzzahlendivision ist, bei der 0 rauskommt. Du addierst also einfach 0 und 0. Versuch es mit "1./4" (1 ist ein int, 1. oder 1.0 ist ein double).
-
Weil 1 und 4 als Integer interpretiert werden und erst das Ergebnis der Integerdivision zu einem double umgewandelt wird. Und wenn man mit Integern rechnet ist 1/4 nun einmal 0.
Dagegen hilft es, die Zahlen in der Rechnung als double hinzuschreiben. Dies ist der Fall, sobald man einen Dezimalpunkt verwendet. Die Zahl 1.0 wird also als double interpretiert.
Folglich muss es (wenn man dein Ergebnis haben will) lauten:
var=1./4+1./4;Beachte, dass es reicht, wenn man einen der Faktoren als double hinschreibt. Ich könnte auch
1./4.schreiben, es käme das gleiche heraus. Aber double/int ist schon eine Fließkommadivision, ebenso int/double.
-
#include <iostream> int main() { double var = 1/4.f + 1/4.f; std::cout << var << std::endl; }
-
sdfgdfg schrieb:
#include <iostream> int main() { double var = 1/4.f + 1/4.f; std::cout << var << std::endl; }Wieso mit float rechnen, wenn's doch ein double-Wert werden soll?
-
_matze schrieb:
sdfgdfg schrieb:
#include <iostream> int main() { double var = 1/4.f + 1/4.f; std::cout << var << std::endl; }Wieso mit float rechnen, wenn's doch ein double-Wert werden soll?
Dann einfach das f weglassen. Hast ja recht
