Wie teile ich zwei ganze Zahlen, um ein Doppel zu bekommen?Wie kann ich zwei ganze Zahlen teilen, um ein Doppel zu bekommen?
Antwort
Sie möchten die Zahlen werfen:
double num3 = (double)num1/(double)num2;
Hinweis: Wenn eines der Argumente in C# a double
ist, eine double
divide verwendet wird, die in einem double
führt. So würde die folgenden arbeiten:
double num3 = (double)num1/num2;
Weitere Informationen finden Sie unter:
Weiß nicht, ob das in C# gleich ist, aber C erfordert nur das erste zu werfen - es wird automatisch Doppel/Int ein Doppel. – paxdiablo
@Pax, Wenn einer der Argumente in C oder C# ein Double ist, wird eine doppelte Division verwendet (was zu einem Double führt). – strager
Achten Sie darauf, dies nicht zu tun: - 'double num3 = (double) (num1/num2);'. Dadurch erhalten Sie eine doppelte Darstellung des Ergebnisses der Ganzzahldivision! –
Konvertieren Sie eines von ihnen in ein Doppel zuerst. Dieses Formular funktioniert in vielen Sprachen:
real_result = (int_numerator + 0.0)/int_denominator
nicht der am besten lesbaren Code obwohl –
Einfacher, einfach zu tun ... 'var result = 1.0 * a/b;' – Basic
@ Basic gibt es 100 Möglichkeiten, es zu tun. Ich bevorzuge Zusatz, nur weil es schneller ist, obwohl Casting offensichtlich noch schneller ist. –
die Ganzzahlen auf doubles umwandeln.
Um genau zu sein, können Sie eine Ganzzahl in ein Doppel wie folgt umwandeln: (double) myIntegerValue – Whiplash
Als Ergänzung zu den @ NoahD Antwort
Um eine größere Genauigkeit haben Sie dezimal werfen können:
(decimal)100/863
//0.1158748551564310544611819235
Oder:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Doppel haben eine Genauigkeit von 64 Bit, während dezimal 128 hat
(double)100/863
//0.11587485515643106
var firstNumber=5000,
secondeNumber=37;
var decimalResult = decimal.Divide(firstNumber,secondeNumber);
Console.WriteLine(decimalResult);
Die Frage scheint nach "double" und nicht nach "decimal" zu fragen. –
Unter der Annahme, dies in einem Interview gefragt wurde - Integer-Division führt immer in integer. Sie müssen einen Typcast wie den unten gezeigten verwenden. – Sesh
Verschiedene Arten von Divisionen: Ganzzahl, Fließkomma, Dezimal -diskussiert in [Warum Integer-Division in C# gibt eine Ganzzahl, aber nicht ein float?] (// stackoverflow.com/q/10851273) –