Deutsch   English   Français   Italiano  
<sohujb$77o$1@news.gegeweb.eu>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!weretis.net!feeder6.news.weretis.net!feeder8.news.weretis.net!news.trigofacile.com!news.gegeweb.eu!gegeweb.org!.POSTED.2a01:cb14:62c:1d00:135:287a:7195:daf7!not-for-mail
From: Julien Salort <listes@salort.eu>
Newsgroups: fr.comp.sys.mac.programmation
Subject: =?UTF-8?Q?Re=3a_Y_a_comme_un_d=c3=a9faut?=
Date: Sun, 5 Dec 2021 09:51:55 +0100
Organization: Gegeweb News Server
Message-ID: <sohujb$77o$1@news.gegeweb.eu>
References: <1pjmz6k.1v0nod6mfq0rkN%josephb@nowhere.invalid>
 <j0vto8FsgsuU1@mid.individual.net>
 <1pjnmh9.11fmmgjvnnxyuN%josephb@nowhere.invalid>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 5 Dec 2021 08:51:55 -0000 (UTC)
Injection-Info: news.gegeweb.eu; posting-account="jsalort@usenet.local"; posting-host="2a01:cb14:62c:1d00:135:287a:7195:daf7";
	logging-data="7416"; mail-complaints-to="abuse@gegeweb.eu"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0)
 Gecko/20100101 Thunderbird/91.3.2
Content-Language: fr
In-Reply-To: <1pjnmh9.11fmmgjvnnxyuN%josephb@nowhere.invalid>
Cancel-Lock: sha256:Yb3QQIO5hl3/hppCpFDvvxpZcGsW2Gl05pSBIYsrYrU=
Bytes: 2689
Lines: 31


Le 04/12/2021 à 10:14, Joseph-B a écrit :

>> 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

C'est un problème de IEEE-754.
On le voit par exemple en Python, si on compare le résultat entre le 
calcul avec des flottants natifs, ou avec des décimaux:

% python
Python 3.10.0 (default, Nov 12 2021, 18:16:44) [Clang 13.0.0 
(clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> 254 % 2.54
2.5399999999999965
 >>> from decimal import Decimal
 >>> Decimal("254") % Decimal("2.54")
Decimal('0.00')

Bien sûr, les décimaux peuvent avoir le même genre de problèmes. Mais la 
différence c'est que les nombres qui s'écrivent exactement en décimal 
seront représentés exactement. Pour les flottants, il faut que la 
représentation en base 2 soit exacte.