Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!news.szaf.org!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: pehache Newsgroups: fr.comp.sys.mac.programmation Subject: =?UTF-8?Q?Re=3a_Y_a_comme_un_d=c3=a9faut?= Date: Sat, 4 Dec 2021 02:14:48 +0100 Lines: 51 Message-ID: References: <1pjmz6k.1v0nod6mfq0rkN%josephb@nowhere.invalid> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: individual.net HzwUpxkD2dyywq5NtZG1DwOEoYoV6DnkGIrpFX5vwKcxDtQp0h Cancel-Lock: sha1:loiMWwOo0kF2XlC3CujfRCs5j+w= User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:78.0) Gecko/20100101 Thunderbird/78.10.1 In-Reply-To: <1pjmz6k.1v0nod6mfq0rkN%josephb@nowhere.invalid> Content-Language: fr Bytes: 3159 Le 04/12/2021 à 00:54, Joseph-B a écrit : > Bonjour, > > 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 > 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). -- "...[la moto] un engin qui par les lois de la physique ne peut pas freiner en courbe.", SLD sur fr.rec.bricolage "...sois ouvert aux idées des autres pour peu qu'elles aillent dans le même sens que les tiennes.", ST sur fr.bio.medecine