Kommastellen verschwinden
-
double abc = 0.0; abc = Convert.ToDouble(7 / 2); MessageBox.Show(abc.ToString());
Er gibt 3 aus. Erst habe ich gedacht dass evtl. bei ToString die Stellenverloren gehen. Dies habe ich im Debugmodus geprüft und abc hat schon vorher den wert 3.0. HILFE!!!
-
hallo
er rechnet erst 7 geteilt durch 2, und bekommt 3 als integer raus. danach machst du die 3 zu einer double.
so long
ps: sowas müsste gehen:
abc = Convert.ToDouble(7f / 2f);
-
oder, wenn es schon um double geht:
double d1 = Convert.ToDouble( 7M / 3M );
-
Xqgene schrieb:
oder, wenn es schon um double geht:
double d1 = Convert.ToDouble( 7M / 3M );
Bedeutet 'M' nicht decimal? Ich denke korrekt ist:
double d1 = Convert.ToDouble( 7d / 3d );
oder
double d1 = Convert.ToDouble( 7.0 / 3.0 );
(double ist default bei Gleitpunktzahl)Jockel
-
Jockelx schrieb:
Xqgene schrieb:
oder, wenn es schon um double geht:
double d1 = Convert.ToDouble( 7M / 3M );
Bedeutet 'M' nicht decimal? Ich denke korrekt ist:
double d1 = Convert.ToDouble( 7d / 3d );
oder
double d1 = Convert.ToDouble( 7.0 / 3.0 );
(double ist default bei Gleitpunktzahl)Jockel
beides ist möglich, nur intern passiert was anderes.
während das suffix "d" einen grundtypen repräsentiert, ist "m" (groß und kleinschreibung egal) kein grundtyp, technisch gesehen.
jedoch kann dem entwickler es in diesem fall eigentlich egal sein, denke ich, ob direkt gearbeitet wird, also ein msil befehl generiert wird, oder eine klasse aus net aufgerufen wird.
ps: ist natürlich nicht im grunde quatsch... man sollte sich immer gedanken machen, wofür man welchen typ nutzen will und muss.
und über die schnelligkeit von 'decimal' ist mir nichts bekannt.
-
@Jockelx: hast natürlich recht. war wohl beim schreiben gedanklich woanders.