3Rescator
Messages postés5Date d'inscriptionvendredi 6 juin 2003StatutMembreDernière intervention29 avril 2004
-
13 févr. 2004 à 01:47
3Rescator
Messages postés5Date d'inscriptionvendredi 6 juin 2003StatutMembreDernière intervention29 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.
manu1506
Messages postés54Date d'inscriptionjeudi 13 novembre 2003StatutMembreDernière intervention25 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'