Comment diviser deux entiers pour obtenir un double ?
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.
Comment diviser deux entiers pour obtenir un double ?
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.
@Pax, Si l'un des arguments en C ou C# est un double, une double division est utilisée (ce qui donne un double).
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 !
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
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
.
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.
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 ?