|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre chevronné
![]() ![]() |
Bonjour à tous,
Voici, pour se détendre, un petit jeu : Code :
![]() Si vous connaissez d'autres bizzareries de ce genre n'hésitez pas à poster ici
|
||
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() ![]() |
Une petite dernière pour la route :
Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : novembre 2007 Messages : 120 ![]() |
|
|
|
00
|
|
|
#4 | |||||
|
Membre Expert
![]() ![]() |
Citation:
Code :
|
|||||
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() ![]() Olivier DecourtFormateur en informatique Inscription : avril 2008 Messages : 1 480 ![]() |
Pour le test, c'est un problème d'arrondi, le même genre que dans le premier exemple.
Code :
|
||
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
Ceci n'est pas un problème, encore moins un problème de SAS. C'est la propriété générale du format binaire pour les nombres rationnels (floating-point numbers). Plus précisément, c'est la suite du changement de base, du passage de la base 10 à la base 2.
C'est à peu près comme dire que 1/3 + 1/3 + 1/3 = 1. Mais 1/3 = 0.33, donc 1/3 + 1/3 + 1/3 = 0.99 - différent de 1. Il faut bien comprendre que chaque nombre décimal qu'on écrit est transcodé en binaire (probablement avec une perte de précision), toutes les opérations sont faites en ce format, et le résultat est de nouveau transformé en décimal (encore une fois - avec une perte de précision possible). C'est pour ça qu'en générale il n'est pas bon d'utiliser l'opération d'égalité pour les nombres décimaux. Tous les informaticiens apprennent d’utiliser les constructions proposées par Olivier (avec un arrondi). La particularité de SAS est qu'il garde le même problème même pour les nombres entiers. Essayez : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com