2009-03-19 46 views
177

¿Cómo divido dos enteros para obtener un doble?¿Cómo puedo dividir dos enteros para obtener un doble?

+9

Suponiendo que esta se le preguntó en una entrevista - división entera siempre resulta en número entero. Debe usar un molde de tipo como los que se muestran a continuación. – Sesh

+2

Diferentes tipos de divisiones: Entero, Punto flotante, Decimales: discutido en [¿Por qué la división entera en C# devuelve un número entero pero no un flotante?] (// stackoverflow.com/q/10851273) –

Respuesta

313

quieres lanzar los números:

double num3 = (double)num1/(double)num2; 

Nota: Si alguno de los argumentos en C# es un double, una división double se utiliza lo que se traduce en una double. Por lo tanto, la siguiente funcionaría también:

double num3 = (double)num1/num2; 

Para obtener más información, véase:

Dot Net Perls

+2

No sé si esto es lo mismo en C#, pero C solo requiere que eche el primero: automáticamente hará doble/int un doble. – paxdiablo

+3

@Pax, si alguno de los argumentos en C o C# es un doble, se usa una doble división (lo que da como resultado un doble). – strager

+14

Tenga cuidado de no hacer esto: - 'double num3 = (double) (num1/num2);'. ¡Esto solo le dará una doble representación del resultado de la división de enteros! –

5

Convierte uno de ellos a doble primero. Este formulario funciona en muchos idiomas:

real_result = (int_numerator + 0.0)/int_denominator 
+4

no es el código más legible aunque –

+0

Más fácil de hacer ... 'var result = 1.0 * a/b;' – Basic

+0

@Basic hay 100 formas de hacerlo. Prefiero agregar solo porque es más rápido, aunque el lanzamiento obviamente es aún más rápido. –

10

emite los números enteros a dobles.

+0

Para ser específico, puede convertir un número entero en un doble como ese: (doble) myIntegerValue – Whiplash

16

Como complemento de la respuesta de la @ de NoahD

tener una mayor precisión puede convertir a decimal:

(decimal)100/863 
//0.1158748551564310544611819235 

O:

Decimal.Divide(100, 863) 
//0.1158748551564310544611819235 

doble tiene una precisión de 64 bits, mientras decimal tiene 128

(double)100/863 
//0.11587485515643106 
0
var firstNumber=5000, 
secondeNumber=37; 

var decimalResult = decimal.Divide(firstNumber,secondeNumber); 

Console.WriteLine(decimalResult); 
+1

La pregunta parece llamar 'double' y no' decimal'. –

Cuestiones relacionadas