Jak podzielić dwie liczby całkowite, aby uzyskać podwójny?
Jak podzielić dwie liczby całkowite, aby uzyskać podwójny?
Odpowiedzi:
Chcesz rzucić liczby:
double num3 = (double)num1/(double)num2;
Uwaga: Jeśli którykolwiek z argumentów w języku C # jest a double
, double
używany jest podział, który daje w wyniku double
. Więc działałyby również:
double num3 = (double)num1/num2;
Aby uzyskać więcej informacji zobacz:
double num3 = (double)(num1/num2);
. To da ci podwójną reprezentację wyniku podziału liczb całkowitych!
double
zamiast float
? Widzę pytania wymagające, double
ale i tak jestem ciekawy.
double
a nie float
. Kiedy piszesz zmienną taką jak var a = 1.0;
ta, 1.0 zawsze jest double
. To chyba główny powód.
Uzupełnienie odpowiedzi @ NoahD
Aby mieć większą precyzję, możesz rzutować na dziesiętne:
(decimal)100/863
//0.1158748551564310544611819235
Lub:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
Przedstawione są podwójne przydzielające 64 bity, podczas gdy dziesiętne używa 128
(double)100/863
//0.11587485515643106
Aby uzyskać więcej informacji na temat reprezentacji zmiennoprzecinkowej na binarny i jego precyzji przyjrzeć tym artykule od Jon Skeet gdzie mówi o floats
i doubles
a ten jeden , gdzie mówi o decimals
.
double
ma precyzję 53 bitów i jest to binarny format zmiennoprzecinkowy, podczas gdy decimal
jest ... dziesiętny, oczywiście z 96 bitami precyzji . double
Jest więc dokładny do ~ 15-17 cyfr dziesiętnych i 28-29 cyfr dziesiętnych (i nie dwukrotnie więcej niż precyzja double
). Co ważniejsze, decimal
faktycznie używa tylko 102 ze 128 bitów
decimals
(96), ale doubles
ma 52 bity mantysy , a nie 53.
rzuć liczby całkowite do liczby podwójnej.
Przekształć jeden z nich w podwójny. Ten formularz działa w wielu językach:
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
a nie decimal
.