Librairie : IntString.lg32 (16Ko)

Source : IntString.G32 (25Ko)

Calcul sur des valeurs entières (positives ou négatives) en utilisant des chaines de caractères. On peut théoriquement manipuler jusqu'à 250 millions de chiffres, théoriquement seulement car les temps de calculs deviennent critiques à partir de 5000 chiffres.

Elle a été developpée pour faire partie d'un projet de jeu type "Factory-simulator" dans lequel de grandes quantités doivent pouvoir être manipulées.

Le nombre de chiffres est limité par la taille maximale d'une chaîne de caractères et la mémoire libre,  théoriquement on peut monter jusqu'à 256 millions de chiffres. Aucune vérification de formatage n'est effectuée, donc les nombres doivent avoir être corrects. Une séquence de chiffres ne commençant pas par 0 (sauf pour la valeur 0) précédée du signe "-" pour les entiers négatifs. Si une opération rencontre un caractère innatendu le programme plante. L'avantage de ne pas checker le format est le temps gagné. Toujours pour gagner du temps la racine carrée d'un nombre est calculée sur sa valeur absolue (pas d'erreur sur les négatifs). Il vous appartient donc de prévoir ces cas si votre programme présente un risque de valeurs erronées.

Les 4 opérations de base sont implémentées, ainsi que le modulo, la racine carré, l'incrémentation et la décrémentation.

  • Addition : Function IS_Add(A As String, B As String) As String
  • Soustraction : Function IS_Sub(A As String, B As String) As String
  • Multiplication : Function IS_Mul(A As String, B As String) As String
  • Division : Function IS_Div(A As String, B As String) As String
  • Modulo : Function IS_Mod(A As String, B As String) As String
  • Racine carrée : Function IS_Sqr(A As String) As String
  • Incrémenter : Proc IS_Inc(ByRef A As String)
  • Décrémenter : Proc IS_Dec(ByRef A As String)

Des fonctions additionnelles permettent d'élaborer un programme :

  • Comparaison : Function IS_AbsMax(A As String, B As String) As Long Naked
  • Différence : Function IS_AbsDif(A As String, B As String) As String
  • PGCD et PPCM : Functions IS_PGCD(A$,B$) and IS_PPCM(A$,B$)

Et enfin d'afficher sous 3 formats :

  • Représentation binaire : Function IS_Bin(A$) as String
  • Affichage pour les jeux : Function IS_FormatGame(A As String) As String
  • Affichage scientifique : Function IS_FormatScientific(A As String, NS As Long) As String

NB : Le préfixe IS signifie "Integer String"

Comments est propulsé par CComment