Bonjour,
En fait quand on fait la
multiplication d'un entier
explicite par un entier
explicite,
le compilateur évalue les chiffres explicites fournis.
255 est un entier, le résultat devrait être un entier, donc limité à 32768 .
En l’occurrence, l'évaluation peut être effectuée jusqu'à 255*128 , en fait toute multiplication d'un entier explicite par un autre qui ne produirait pas plus de 32768...
C'est bestial mais c'est comme ça ....
Pour "contrer" ce processus, rajouter
# à la fin d'un des chiffres pour indiquer au compilateur que c'est un chiffre "double" et donc que le résultat devra également être "double"
r = Int(100000 / (255# * 255))
Vous auriez pu également indiquer
r = Int(100000 / (255 ^ 2)) <-- ce n'est pas une multiplication
i=255: r = Int(100000 / (i * i)) <-- ce n'est pas explicite
i=255: r = Int(100000 / (255 * i)) <-- ce n'est pas explicite
Mais rassurez-vous, le piège surprend tout le monde, même les plus aguerris ...