6 votes

Int vs Double et exception de division par zéro

Nous obtenons une erreur à la compilation lorsque l'entier est divisé par zéro, alors que dans le cas du double, il n'y a pas d'erreur à la compilation, mais à l'exécution, nous obtenons l'infini/NaN comme résultat. Avez-vous une idée de la raison pour laquelle int et double ont un comportement différent en ce qui concerne l'exception de division par zéro ?

void Main()
{
    int number = 20;
    var result1 = number/0; // Divide by zero compile time exception

    double doubleNumber = 20;
    var result2 = doubleNumber/0.0; // no compile time error. Result is infinity or NaN
}

8voto

Dunes Points 6740

Parce que c'est comme ça que c'est défini . Alors qu'avec les nombres entiers, il n'y a pas de valeurs spéciales pour l'infini et NaN, de sorte que le compilateur génère une erreur s'il peut repérer le problème au moment de la compilation.

2voto

mtijn Points 2036

Théoriquement, la division par zéro devrait donner l'infini, mais le type de données integer n'a rien pour représenter l'infini. Le type de données double le fait, donc il n'y a pas besoin de lancer une exception ici.

1voto

Saeb Points 3250

En raison de leur formation mathématique. L'infini est défini pour les nombres à virgule flottante mais pas pour les nombres entiers.

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