Wie teile ich zwei ganze Zahlen, um ein Doppel zu erhalten?
Wie teile ich zwei ganze Zahlen, um ein Doppel zu erhalten?
Antworten:
Sie möchten die Zahlen umwandeln:
double num3 = (double)num1/(double)num2;
Hinweis: Wenn eines der Argumente in C # a ist double
, wird eine double
Division verwendet, die zu a führt double
. Folgendes würde also auch funktionieren:
double num3 = (double)num1/num2;
Weitere Informationen finden Sie unter:
double num3 = (double)(num1/num2);
. Dies gibt Ihnen nur eine doppelte Darstellung des Ergebnisses der Ganzzahldivision!
double
statt float
? Ich kann die Fragen sehen, double
aber ich bin trotzdem neugierig.
double
und nicht float
. Wenn Sie eine Variable genau wie schreiben var a = 1.0;
, ist diese 1.0 immer eine double
. Ich denke, das ist der Hauptgrund.
Ergänzung der Antwort von @ NoahD
Um eine höhere Genauigkeit zu erzielen, können Sie in Dezimalzahlen umwandeln:
(decimal)100/863
//0.1158748551564310544611819235
Oder:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Double werden mit 64 Bit dargestellt, während Dezimal 128 verwendet
(double)100/863
//0.11587485515643106
Für weitere Details über die Gleitkommadarstellung in Binär- und seine Präzision einen Blick auf nehmen diesen Artikel von Jon Skeet , wo er darüber spricht , floats
und doubles
und diese , wo er spricht decimals
.
double
hat eine Genauigkeit von 53 Bit und ist ein binäres Gleitkommaformat, während decimal
es ein ... Dezimalformat ist, natürlich mit einer Genauigkeit von 96 Bit . Ist double
also auf ~ 15-17 Dezimalstellen und 28-29 Dezimalstellen genau (und nicht doppelt so genau wie double
). Noch wichtiger ist, verwendet decimal
tatsächlich nur 102 der 128 Bits
decimals
(96), sondern doubles
hat 52 Bits Mantisse , nicht 53.
Wirf die ganzen Zahlen auf Doppel.
Wandle einen von ihnen zuerst in ein Double um. Dieses Formular funktioniert in vielen Sprachen:
real_result = (int_numerator + 0.0) / int_denominator
var result = 1.0 * a / b;
var firstNumber=5000,
secondeNumber=37;
var decimalResult = decimal.Divide(firstNumber,secondeNumber);
Console.WriteLine(decimalResult );
double
und nicht decimal
.