What Every Computer Scientist Should Know About Floating-Point Arithmetic
Etre enseignant en mathématiques ne permet pas de tout savoir sur le comportement des langages informatique. Là tu cries au loup pour un comportement habituel, en appelant "bug" un manque de connaissance. Mais on est tous passés par là!
L'erreur est "normal". Celle-ci est dû à la structure de stockage des float. Quand on lit la documentation Java sur les types primitifs, cela est précisé : Envoyé par float The float data type is a single-precision 32-bit IEEE 754 floating point. Its range of values is beyond the scope of this discussion, but is specified in the Floating-Point Types, Formats, and Values section of the Java Language Specification. As with the recommendations for byte and short, use a float (instead of double) if you need to save memory in large arrays of floating point numbers. This data type should never be used for precise values, such as currency. For that, you will need to use the java.math.BigDecimal class instead. Numbers and Strings covers BigDecimal and other useful classes provided by the Java platform. Source : https://docs.oracle.com/javase/tutor...datatypes.html https://docs.oracle.com/javase/specs...html#jls-4.2.3
Envoyé par plegat Le calcul est bon, ou est le problème? le 0.00000000000000001 en trop? C'est de l'informatique ça, pas de la problématique... Sinon fait: Code : Sélectionner tout - Visualiser dans une fenêtre à part 0.55f*100 ça devrait de suite te rassurer... Pour le petit code, il fallait plutôt écrire 0.55*100f et non 0.55f*100, de plus le f est inutile ici car l'interpréteur détecte que c'est une opération flottante à cause du 0.55. Le f est utile en cas de division pour distinguer la division entière de la division euclidienne. Bien sûr, je parle dans le contexte du langage PHP. Java est un peu plus rigoureux dans certains cas.
0.55f*100
Envoyé par plegat Le calcul est bon, ou est le problème? le 0.00000000000000001 en trop? C'est de l'informatique ça, pas de la problématique... Sinon fait: Code : Sélectionner tout - Visualiser dans une fenêtre à part 0.55f*100 ça devrait de suite te rassurer... Je pense que tu n'as pas saisi le problème ni les conséquences ... et ton calcul est interprété avec du php et non pas par une jvm ... , par ailleurs, je suis aussi enseignant de mathématiques au lycée ...
Je viens de faire le test sous Linux installé sous machine virtuelle avec la Open JDK 6 : même problème.
Le calcul est bon, ou est le problème? le 0.00000000000000001 en trop? C'est de l'informatique ça, pas de la problématique... Sinon fait: Code : Sélectionner tout - Visualiser dans une fenêtre à part 0.55f*100 ça devrait de suite te rassurer...