il faut passer par le texte ! , le texte ,n'a pas de limite de longueur
et utiliser la methode "calcul a la main ! " ; si tu sais calculer une addition/division,multiplication a la main,
ben tu reproduits la meme chose avec un prg
exemple simple , ici , avec une addition
on sait qu'on ajoute les chiffres avec ceux du dessous
123
+
123
-----
246 <--- donc on pose nos chiffres et on fait pareil , on utilise une variable pour la retenue ,et c'est parti !
le code :
Code : Tout sélectionner
;***********************************************
;Titre :*addition_grand_nombre
;Auteur : Zorro
;Date :21/02/2017
;Heure :20:33:24
;Version Purebasic : PureBasic 5.50 (Windows - x86)
;Version de l'editeur :EPB V2.64
; Libairies necessaire : Aucune
;***********************************************
a.s="12345676546561651161651651648461321326546515133" ; autant de chiffre que tu veux
b.s="12345651313546846168431356513135468465516561" ; autant de chiffre que tu veux
retenue.s=""
rest.s=""
Resultat.s=""
al=len(a.s)
bl=len(b.s)
if al<bl:dif=bl-al:a.s=Rset(a.s,len(a.s)+dif,"0"):Endif
if bl<al:dif=al-bl:b.s=Rset(b.s,len(b.s)+dif,"0"):Endif
a.s=ReverseString(a.s)
b.s=ReverseString(b.s)
For i=1 to len(a.s)
z1=val(mid(a.s,i,1))
z2=val(mid(b.s,i,1))
r=z1+z2+val(retenue.s):retenue.s="0"
result_temp.s=str(r)
If len(result_temp.s)>1 :retenue.s=left(result_temp.s,1):reste.s=right(result_temp.s,1):endif
If len(result_temp.s)=1:reste.s=result_temp.s:result_temp.s="":Endif
Resultat.s=Resultat.s+reste.s
reste.s="":result_temp.s=""
Next i
Resultat.s=ReverseString(Resultat.s)
debug "le resultat est :" +Resultat.s