¿Cómo divido dos enteros para obtener un doble?
¿Cómo divido dos enteros para obtener un doble?
Respuestas:
Quieres lanzar los números:
double num3 = (double)num1/(double)num2;
Nota: Si alguno de los argumentos en C # es a double
, double
se usa una división que resulta en a double
. Entonces, lo siguiente también funcionaría:
double num3 = (double)num1/num2;
Para más información, ver:
double num3 = (double)(num1/num2);
. ¡Esto solo le dará una doble representación del resultado de la división entera!
double
lugar de float
? Puedo ver la pregunta, double
pero tengo curiosidad de todos modos.
double
y no float
. Cuando escribe una variable como var a = 1.0;
, este 1.0 siempre es un double
. Supongo que esta es la razón principal.
Complementando la respuesta de @ NoahD
Para tener una mayor precisión, puede convertir a decimal:
(decimal)100/863
//0.1158748551564310544611819235
O:
Decimal.Divide(100, 863)
//0.1158748551564310544611819235
El doble se representa asignando 64 bits mientras que el decimal usa 128
(double)100/863
//0.11587485515643106
Para más detalles acerca de la representación de coma flotante en binario y su precisión echar un vistazo a este artículo de Jon Skeet donde habla de floats
y doubles
y éste donde habla decimals
.
double
tiene una precisión de 53 bits, y es un formato binario de coma flotante, mientras que decimal
es ... decimal, por supuesto, con 96 bits de precisión . Entonces double
es preciso a ~ 15-17 dígitos decimales y 28-29 dígitos decimales (y no el doble de precisión de double
). Lo más importante decimal
es que solo usa 102 de los 128 bits
decimals
(96), pero doubles
tiene 52 bits de mantisa , no 53.
convierte los enteros en dobles.
Convierta uno de ellos a un doble primero. Este formulario funciona en muchos idiomas:
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
y no decimal
.