En fait cela provient de la manière dont on code les doubles.
Le C++ utilise la décomposition en exposants de 2 comme pour les entiers mais avec des exposants négatifs.
Je m'explique, 4 c'est en binaire 100 2 expo 2.
Et bien 0.5 c'est si on veut 2 expo -1 donc avec mon codage 0,1
Et donc 0.25 se coderait par 0,01 en binaire.
Mon code avec des , n'est pas normé, c'est juste pour expliquer.
La base de décomposition pour les entiers est 1,2,4,8,16,32,64,128,256... tout le monde connait.
Pour les nombres a virgule, on rajoute :
0.5 0.25 0.125 0.0625 ...
Et donc 0.3 n'est pas faisable en sommes de puissances de 2, donc est arrondi.
On appelle ce bug l'underflow qui est pareil que l'overflow mais pour les petits nombres.
Pour ce qui est de la calculatrice de windows, je sais pas comment elle marche, désolé.
---------------
WebPaC