>> DAVID Malan: Voyons maintenant souffler votre esprit.
Il s'avère dans le monde réel 1 divisé par 10 est en effet 1/10, ou 0,1.
Mais dans les ordinateurs qui ont seulement un fini nombre de bits avec lequel
représenter des nombres, vous ne pouvez pas toujours représenter des nombres comme 1/10 avec
une précision parfaite.
En d'autres termes, les ordinateurs ont parfois à faire preuve de jugement et de ne pas
représentent pas nécessairement le numéro que vous veulent aussi précisément que vous avez l'intention.
>> Par exemple, supposons que je retourne dans ce programme et changer l'0,1 à,
oh, 0,28, ce qui indique que J'aimerais printf à printf à
28 places de précision.
Voyons maintenant enregistrer et compiler le programme, cette fois avec la marque floats2.
Lancez-le avec le point barre floats2.
Et, mon Dieu, cette fois, je vois pas 0,1, mais 0.10000000, ce qui est assez
bon jusqu'ici.
Mais alors, 14901161193847656250.
>> Eh bien, ce qui se passe?
Eh bien, il s'avère que le flotteur est typiquement stocké à l'intérieur d'un ordinateur
avec 32 bits.
32 est évidemment un nombre fini, qui implique que vous ne pouvez représenter
32 bits avec un nombre fini d' des valeurs en virgule flottante.
Malheureusement, cela signifie que l' ordinateur ne peut pas représenter possible
nombres à virgule flottante, ou des nombres réels, qui existe dans le monde entier,
car il ne dispose que de nombreux bits.
>> Et si ce que l'ordinateur est apparemment faire dans ce cas est de représenter 1/10 à
le flottant le plus proche possible valeur du point qu'il peut.
Mais si nous regardons, que nous avons ici, au 28 décimales, nous commençons à voir que
imprécision.
C'est donc un problème avec pas de solution parfaite.
Nous pouvons utiliser un double au lieu d'un flotteur, qui tend à utiliser 64 bits comme
contre 32.
Mais bien sûr, 64 est aussi fini, de sorte que le problème sera
rester, même avec des doubles.