cs_Jean-Pierre
Messages postés82Date d'inscriptionjeudi 25 septembre 2003StatutMembreDernière intervention20 avril 2010
-
20 avril 2010 à 10:50
cs_Jean-Pierre
Messages postés82Date d'inscriptionjeudi 25 septembre 2003StatutMembreDernière intervention20 avril 2010
-
20 avril 2010 à 14:47
Bonjour,
Voilà, je bute sur un truc tout bête
var
a, b: Extended;
begin
a := 1234567890123456; // 16 chiffres
b := 2;
ShowMessage(FloatToStr(a * b)); // Résultat = 2,46913578024691E15
// Extended = 19 chiffres à virgule flottante sur 10 octets
end;
2,46913578024691E15 pour le résultat de cette multiplication, là j'ai encore loupé un truc par rapport à l'extended.
L'autre fois ici, j'avais lu pareil souci, mais je ne retrouve plus ce post. J'ai passé du temps à chercher et que dalle, sniffff alors.
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 20 avril 2010 à 12:17
Salut,
c'est la méthode de conversion qui fait la différence :
[hr][b]var
/ba, b, res: Extended;
resstr: string;
[b]begin
/ba := 1234567890123456; // 16 chiffres
b : = 2;
res := a * b;
Str(res:18:2, resstr);
ShowMessage(resstr); // Résultat = 2469135780246912.00
// Extended = 19 chiffres à virgule flottante sur 10 octets end;
je ne vois pas ce qui te gène dans ton résultat : Si je me trompe 1234567890123456 en écriture scientifique ca donne 1,234567890123456E15. Je ne vois pas ce qui te chiffonne