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


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

 199
Author: Bill the Lizard, 2009-03-19

5 answers

Quieres lanzar los números:

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

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

double num3 = (double)num1/num2;

Para más información ver:

Dot Net Perls

 341
Author: NoahD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-19 19:51:11

Complementando la respuesta de @NoahD

Para tener una mayor precisión se puede lanzar 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

Explicación en profundidad de la"precisión"

Para obtener más detalles sobre la representación en coma flotante en binario y su precisión, eche un vistazo a este artículo de Jon Skeet donde habla de floats y doubles y este donde habla acerca de decimals.

 20
Author: fabriciorissetto,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-21 21:58:15

Lanza los enteros a dobles.

 10
Author: Stephen Wrighton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-19 04:12:47

Convertir uno de ellos a un doble primero. Esta forma funciona en muchos idiomas:

 real_result = (int_numerator + 0.0) / int_denominator
 5
Author: Mark Ransom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-19 04:12:02
var firstNumber=5000,
secondeNumber=37;

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

Console.WriteLine(decimalResult );
 0
Author: Rejwanul Reja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-10 10:01:33