335 votes

Comment diviser deux entiers pour obtenir un double ?

Comment diviser deux entiers pour obtenir un double ?

10 votes

En supposant que cette question ait été posée lors d'un entretien - la division d'un nombre entier donne toujours un nombre entier. Vous devez utiliser un type cast comme ceux montrés ci-dessous.

2 votes

Différents types de divisions : Entier ,Flottant ,Décimal -discuté en Pourquoi la division d'un nombre entier en c# renvoie un nombre entier mais pas un flottant ?

526voto

NoahD Points 2655

Vous voulez lancer les chiffres :

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

Note : Si l'un des arguments en C# est un double , a double est utilisé, ce qui donne lieu à un double . Donc, ce qui suit fonctionnerait aussi :

double num3 = (double)num1/num2;

Pour plus d'informations, voir :

Dot Net Perls

5 votes

Je ne sais pas si c'est la même chose en C#, mais en C, il suffit de caster le premier - cela fera automatiquement de double/int un double.

4 votes

@Pax, Si l'un des arguments en C ou C# est un double, une double division est utilisée (ce qui donne un double).

44 votes

Faites attention à ne pas faire cela :- double num3 = (double)(num1/num2); . Cela vous donnera juste une représentation double du résultat de la division entière !

37voto

fabriciorissetto Points 100

Complétant la réponse de @NoahD

Pour avoir une plus grande précision, vous pouvez passer en décimal :

(decimal)100/863
//0.1158748551564310544611819235

Ou :

Decimal.Divide(100, 863)
//0.1158748551564310544611819235

Les doubles sont représentés en allouant 64 bits, tandis que les décimaux en utilisent 128.

(double)100/863
//0.11587485515643106

Explication approfondie de la notion de "précision".

Pour plus de détails sur la représentation en virgule flottante en binaire et sa précision, consultez le site suivant cet article de Jon Skeet où il parle de floats et doubles et celui-ci où il parle de decimals .

10voto

Stephen Wrighton Points 15904

Transforme les entiers en doubles.

0 votes

Pour être plus précis, vous pouvez convertir un entier en un double de la manière suivante : (double)monIntegerValue

6voto

Mark Ransom Points 132545

Convertissez l'un d'entre eux en un double premier. Cette forme fonctionne dans de nombreuses langues :

 real_result = (int_numerator + 0.0) / int_denominator

1 votes

C'est plus facile de faire... var result = 1.0 * a / b;

0 votes

@Basic il y a 100 façons de le faire. Je préfère l'addition simplement parce que c'est plus rapide, bien que la coulée soit évidemment encore plus rapide.

4voto

Rejwanul Reja Points 406
var firstNumber=5000,
secondeNumber=37;

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

Console.WriteLine(decimalResult );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X