Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!news.imp.ch!news.alphanet.ch!alphanet.ch!.POSTED.lfbn-poi-1-1100-187.w83-200.abo.wanadoo.fr!josephb From: josephb@nowhere.invalid (Joseph-B) Newsgroups: fr.comp.sys.mac.programmation Subject: Re: Y a comme un =?ISO-8859-1?Q?d=E9faut?= Date: Sat, 4 Dec 2021 10:14:56 +0100 Organization: Aucune Sender: joseph25b@lfbn-poi-1-1100-187.w83-200.abo.wanadoo.fr Message-ID: <1pjnmh9.11fmmgjvnnxyuN%josephb@nowhere.invalid> References: <1pjmz6k.1v0nod6mfq0rkN%josephb@nowhere.invalid> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Info: shakotay.alphanet.ch; posting-host="lfbn-poi-1-1100-187.w83-200.abo.wanadoo.fr:83.200.203.187"; logging-data="4077"; mail-complaints-to="usenet@alphanet.ch" User-Agent: MacSOUP/F-2.8.4 (6da4d6e6d0) (Mac OS X version 10.11.6 (x86)) X-NO-ARCHIVE: YES Bytes: 2627 Lines: 42 pehache wrote: > 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). Ton argument serait recevable, encore que très dérangeant dans les calculs pratiques, pour (254 mod 25.4) ==> 1.4210854715202E-14 Là où il n'est plus soutenable c'est pour (254 mod 2.54) ==> 2.54 Si le copro-arithmétique du Mac n'a pas été écrit pour retourner la valeur correcte (± epsilon d'après ton argument) de la FONCTION "RESTE" d'une divison, il y a un GROS SOUCI !! Pour preuve, toujours dans l'éditeur de script si j'essaie cette fois en javascript 254 % 2.54 ==> 2.5399999999999965 ou 7412 % 74.12 ==> 74.11999999999955 résultats totalement inacceptables, et je ne me satisfais pas vraiment que 7412 % 7.412 ==> 7.815970093361102e-14 tende vers zéro d'ailleurs, voici en dessous une fonction Modulo() écrite en AppleScript, qui fort heureusement retourne "ZÉRO" comme reste de (par exemple…) 254 par 2.54 ou 789452.18 par 789.45218 ou toutes autres valeurs du domaine de précison du copro. on Modulo(dividende, diviseur) set partieEntiere to (dividende div diviseur) set reste to (dividende - (partieEntiere * diviseur)) return reste end Modulo -- J. B.