Pourriez-vous m'expliquer comment vous obtenez ce résultat ?
Un peu compliqué, ça … En gros j'extrais d'abord du Double l'exposant de puissance de 2, puis je divise le Double par 2 ^ cet exposant pour obtenir une mantisse >=1 et <2. Pour la restitution exacte en décimal je passe par une représentation en base numérique 10000 codée en tableaux dynamiques d'Integer.
Est-ce que cela veut dire qu'on ne peut pas utiliser ces nombres.
Ça veut dire qu'ils ne peuvent pas être codés exactement en Double. Il peuvent l'être en Currency et en Variant/Decimal.
Une pratique archi classique pour estimer si deux valeurs numériques obtenues par des voies différentes sont quasi égales consiste à tester si la valeur absolue de leur différence est inférieure à un très petit seuil.
J'ai ajouté deux formules à votre classeur et :
'[test carine.xlsx] 1 TOUT'!A1, constante affichée "18,32" par format "Standard",
vaut: +1,&H251EB851EB852 × 2^+&H004, soit: 2578310786669609 / 2^47,
soit: 18,32000000000000028421709430404007434844970703125
———————————————————————————————————
'[test carine.xlsx] 1 TOUT'!C1, constante affichée "2,99" par format "Standard",
vaut: +1,&H7EB851EB851EC × 2^+&H001, soit: 1683220360729723 / 2^49,
soit: 2,9900000000000002131628207280300557613372802734375
———————————————————————————————————
'[test carine.xlsx] 1 TOUT'!D1, formule: =A1+C1, affichée "21,31" par format "Standard",
vaut: +1,&H54F5C28F5C290 × 2^+&H004, soit: 374889484606505 / 2^44,
soit: 21,31000000000000227373675443232059478759765625
———————————————————————————————————
'[test carine.xlsx] 1 TOUT'!E1, formule: =ARRONDI(D1;2), affichée "21,31" par format "Standard",
vaut: +1,&H54F5C28F5C28F × 2^+&H004, soit: 5998231753704079 / 2^48,
soit: 21,309999999999998721023075631819665431976318359375