Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.sys.mac.programmation > #2091

Re: Y a comme un défaut

From Olivier Miakinen <om+news@miakinen.net>
Newsgroups fr.comp.sys.mac.programmation
Subject Re: Y a comme un défaut
Date 2021-12-04 12:48 +0100
Organization There's no cabale
Message-ID <sofkhr$p39$1@cabale.usenet-fr.net> (permalink)
References <1pjmz6k.1v0nod6mfq0rkN%josephb@nowhere.invalid> <j0vto8FsgsuU1@mid.individual.net> <1pjnmh9.11fmmgjvnnxyuN%josephb@nowhere.invalid>

Show all headers | View raw


Bonjour,

Le 04/12/2021 10:14, Joseph-B a écrit :
> pehache <pehache.7@gmail.com> 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'argument *est* recevable et *est* dérangeant mais c'est un problème
très connu depuis toujours avec les représentations des nombres en
binaire avec virgule flottante.

La solution consiste à travailler en nombres entiers dans une unité de
mesure suffisamment petite pour tous tes besoins. Par exemple, si tu
as besoin de représenter exactement 2,54 cm, il faut que ton unité de
mesure soit aussi petite que le dixième de millimètre. Pour être sûr
de ne pas avor de problème, tu peux même travailler au micron (non, je
n'ai pas parlé de variant).

Tu coup, tes 2,54 cm par pouce, ça devient 25400 µm par pouce et c'est
tout à fait gérable en nombres entiers.

> Là où il n'est plus soutenable c'est pour (254 mod 2.54) ==> 2.54

C'est la même chose. La valeur la plus proche de zéro doit être un
nombre négatif, probablement quelque chose comme -1.4210854715202E-14.
Pour en faire un nombre entre 0 et 2,54 le résultat calculé est alors
2,54 - 1.4210854715202E-14, et à l'affichage ça donne 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 !! 

Le Mac n'est pas en cause, ce qui est en cause est inhérent aux calculs
en nombres flottants binaires, probablement IEEE 754. Passe en nombres
entiers et tes problèmes disparaitront.

> 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

C'est la même chose.

> résultats totalement inacceptables

C'est à toi de ne *pas* les accepter, en utilisant des nombres entiers.
Ou alors il te faut une représentation décimale et non pas binaire, mais
je ne sais pas si c'est utilisable simplement dans tes programmes.


-- 
Olivier Miakinen

Back to fr.comp.sys.mac.programmation | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 00:54 +0100
  Re: Y a comme un défaut pehache <pehache.7@gmail.com> - 2021-12-04 02:14 +0100
    Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 10:14 +0100
      Re: Y a comme un défaut Olivier Miakinen <om+news@miakinen.net> - 2021-12-04 12:48 +0100
        Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 13:16 +0100
          Re: Y a comme un défaut Olivier Miakinen <om+news@miakinen.net> - 2021-12-04 13:23 +0100
            Calculette IEEE754 (was: Y a comme un défaut) Olivier Miakinen <om+news@miakinen.net> - 2021-12-04 14:39 +0100
      Re: Y a comme un défaut pehache <pehache.7@gmail.com> - 2021-12-04 13:46 +0100
        Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 15:25 +0100
          Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 14:49 +0000
            Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 19:21 +0100
              Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 18:58 +0000
          Re: Y a comme un défaut Benoit <benoit@com.invalid> - 2021-12-04 16:35 +0000
          Re: Y a comme un défaut pehache <pehache.7@gmail.com> - 2021-12-04 17:39 +0100
            Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 19:21 +0100
              Re: Y a comme un défaut pehache <pehache.7@gmail.com> - 2021-12-04 20:28 +0100
              Re: Y a comme un défaut JPP <jpp@findelmundo.invalid> - 2021-12-05 03:24 -0300
      Re: Y a comme un défaut Julien Salort <listes@salort.eu> - 2021-12-05 09:51 +0100
  Re: Y a comme un défaut Fleuger <g4fleurot@free.fr.invalid> - 2021-12-04 08:27 +0000
    Re: Y a comme un défaut Fleuger <g4fleurot@free.fr.invalid> - 2021-12-04 09:00 +0000
      Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 09:25 +0000
        Re: Y a comme un défaut Fleuger <g4fleurot@free.fr.invalid> - 2021-12-04 13:01 +0000
          Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 14:27 +0000
    Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 10:14 +0100
      Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 09:30 +0000
        Re: Y a comme un défaut josephb@nowhere.invalid (Joseph-B) - 2021-12-04 12:57 +0100
          Re: Y a comme un défaut pehache <pehache.7@gmail.com> - 2021-12-04 14:16 +0100
          Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 14:18 +0000
      Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 10:30 +0000
  Re: Y a comme un défaut "M.V." <mv@gmail.com.invalid> - 2021-12-04 08:45 +0000
  Re: Y a comme un défaut JPP <jpp@findelmundo.invalid> - 2021-12-04 14:16 -0300
  Re: Y a comme un défaut "Néo, l'Élu" <neo-de-matrix@meta-science.fr> - 2022-02-07 10:56 +0000

csiph-web