Extended trop court

3Rescator Messages postés 5 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 29 avril 2004 - 13 févr. 2004 à 01:47
3Rescator Messages postés 5 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 29 avril 2004 - 29 avril 2004 à 19:21
Je dois calculer des nombres d'une longueur de 25 chiffres.

Mais Extended est trop court car il ne peut contenir que 19 chiffres : ça me fait passer en notation scientifique, alors que je dois rester en notation classique.

Le nombre étant additionné, je ne peux pas rester dans une variable string, malheureusement.

Quelqu'un aurait-il une idée ?

Bon courage à vous tous, et à bientôt.

2 réponses

manu1506 Messages postés 54 Date d'inscription jeudi 13 novembre 2003 Statut Membre Dernière intervention 25 avril 2012
29 avril 2004 à 04:32
Tu peux effectuer toi-même l'addition de nombres contenus dans des chaînes en faisant comme si tu le faisais sur papier.

function Additionner(N1, N2: ShortString): ShortString;
var
zN1: array[0..255] of Byte absolute N1;
zN2: array[0..255] of Byte absolute N2;
X: Byte;
Temp: Byte;
Retenue: Byte;
begin
Result:= '';
// Faire en sorte que les chaînes N1 et N2 soient
// de même longueur
while zN1[0]<255 do Insert('0', N1, 1);
while zN2[0]<255 do Insert('0', N2, 1);
// Additionner N1 et N2 dans Result
Retenue:= 0;
for X:= 255 downto 1 do begin
Temp:= Retenue;
Retenue:= 0;
if (N1[X] in ['0'..'9']) then Temp:= Temp + zN1[X] - 48;
if (N2[X] in ['0'..'9']) then Temp:= Temp + zN2[X] - 48;
if Temp>=10 then begin
Temp:= Temp - 10;
Retenue:= 1;
end;
Insert(Chr(Temp + 48), Result, 1);
end;
if Retenue>0 then Insert(Chr(Retenue + 48), Result, 1);
// Supprimer les zéros inutiles
while Result[1]='0' do Delete(Result, 1, 1);
end;

Bon, j'ai écris le code comme ça à l'arrachée et il peut être optimisé...
Mais avec, tu peux déjà additionner des nombres de 255 chiffres.

Pour plus de détails, regarde l'aide dans Delphi à propos de 'absolute'
0
3Rescator Messages postés 5 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 29 avril 2004
29 avril 2004 à 19:21
Je vais travailler là-dessus, ça me paraît tout à fait intéressant.

Manu, je te remercie...
0
Rejoignez-nous