Liste des Groupes | Revenir à fcsm programmation |
Bonjour,Il n'y a pas forcément de défaut, calculer des restes en arithmétique flottante est forcément casse-gueule quand le résultat de la division est censé être une valeur entière. Quand tu écris "2,54" (ou n'importe quelle autre valeur) la représentation en machine est une approximation de cette valeur, ce n'est pas la valeur exacte (sauf coup de chance).
Sauf erreur de ma part, je viens de faire une découverte déstabilisante.
Des volontaires pour exécuter le petit script que je vous mets en dessous ?
Après le premier test avec la valeur 2.54 pour diviseur
refaites l'essai avec 25.4
Dites-moi si des résultats obtenus chez vous sont conformes ou délirants ?
Je ne me rappelle pas avoir jamais rencontré cette "anomalie" depuis que je tripote appleScript*.
Le bug provient-il de El Cap ou se perpétue-t-il encore ?
* Ce qui ne veut pas dire qu'elle n'était pas déjà là ?
*******************
set diviseur to 2.54
set serie to {0.254, 2.54, 25.4, 254, 2540}
set restes to {}
set text item delimiters to " - "
set commentaire to "Restes de la division par " & (diviseur as text) & " de" & linefeed & (serie as string)
repeat with value in serie
copy (value mod diviseur) to the end of restes
end repeat
display alert (restes's every item as text) message commentaire
*********************
AppleScript operator Description
mod Remainder.
A binary arithmetic operator that divides the number to its left by the number to its right and returns the remainder as its
result.
Class of operands: integer, real Class of result: integer, real
*********************
pour info, avec 2,54 j'obtiens
0,254 - 0,0 - 2,54 - 2,54 - 2,54
et avec 25,4
0,254 - 2,54 - 0,0 - 1,42108547152E-14 - 1,42108547152E-13
Les messages affichés proviennent d'usenet.