Donnez vie à vos documents numériques !
 

Convertir des chiffres en nombres en lettres

abracadabraPDF Forums PDF – Général Convertir des chiffres en nombres en lettres

  • Ce sujet est vide.
  • Créateur
    Sujet
  • #45338
    Bobard
    Membre

    voilà j’ai récupérai un script pour transformer un nombre en lettres:

    Code:
    aTens = [ “vingt”, “trente”, “quarante”, “cinquante”, “soixante”, “soixante-dix”, “quatre-vingt”, “quatre-vingt-dix”];
    aOnes = [ “zéro”, “un”, “deux”, “trois”, “quatre”, “cinq”, “six”, “sept”, “huit”, “neuf”, “dix”, “onze”, “douze”, “treize”, “quatorze”, “quinze”, “seize”, “dix-sept”, “dix-huit”, “dix-neuf” ];
    function ConvertToHundreds(num)
    {
        var cNum, nNum;
        var cWords = “”;

      num %= 1000;
        if (num > 99) {
          /* Hundreds. */
          cNum = String(num);
          nNum = Number(cNum.charAt(0));
          cWords += aOnes[nNum] + ” cent(s)”;
          num %= 100;
          if (num > 0)
              cWords += ” “
        }
     
        if (num > 19) {
          /* Tens. */
          cNum = String(num);
          nNum = Number(cNum.charAt(0));
          cWords += aTens[nNum – 2];
          num %= 10;
          if (num > 0)
              cWords += “-“;
        }

      if (num > 0) {
          /* Ones and teens. */
          nNum = Math.floor(num);
          cWords += aOnes[nNum];
        }

      return cWords;
    }

    function ConvertToWords(num)
    {
        var aUnits = [ “mille(s)”, “million(s)”, “milliard(s)”, “trilliard(s)”, “quadrillion(s)” ];
        var cWords = (num >= 1 && num     var nLeft = Math.floor(num);
        for (var i = 0; nLeft > 0; i++) {
            if (nLeft % 1000 > 0) {
              if (i != 0)
                  cWords = ConvertToHundreds(nLeft) + ” ” + aUnits + ” ” + cWords;
              else
                  cWords = ConvertToHundreds(nLeft) + ” ” + cWords;
            }
            nLeft = Math.floor(nLeft / 1000);
        }
        num = Math.round(num * 100) % 100;
        if (num > 1)
          cWords += ConvertToHundreds(num) + ” centimes”;
        else if (num == 1)
          cWords += ConvertToHundreds(num) + ” centime”;
        else
          cWords += “zéro centime”;

      return cWords;
    }


    ma question est: comment supprimer les centimes et donc arrondir le nombre sans décimales ?
    merci d’avance
    @+

Affichage de 18 réponses de 1 à 18 (sur un total de 18)
  • Auteur
    Réponses
  • #60195
    alex
    Participant

    Ci-joint le script corrigé vite fait (il y a des petites choses à peaufiner pour que tout soit parfait).
    Amitiés à tous.

    #60196
    Bobard
    Membre

    Bjr et merci Alex
    effectivement je vois un petit bug avec ton exemple “1233,00” >> comment supprimer le “un” devant “mile” (pareil pour “cent”) ?
    @+

    #60197
    Merlin
    Maître des clés

    Bonjour.

    Avec Acrobat 5 était fourni un exemple en anglais et en US$ : http://abracadabrapdf.net/parking/CHECK.pdf

    Dont j’avais francisé les scripts pour des suisses : http://abracadabrapdf.net/parking/AcroUsers/Cheque_vf.pdf

    La mention “pour des suisses” est importante car mon document utilise septante, huitante et nonante.
    Il faudrait l’adapter à nos soixante-dix, quatre-vingt et quatre-vingt-dix…

    #60198
    Bobard
    Membre

    Bjr Merlin
    justement le script que j’ai récupérer viens de là !!

    #60199
    alex
    Participant

    Bonjour,
    Voici ma seconde copie mais il faut la tester à fond, il peut rester des erreurs. En principe on écrit bien:
    un million, un milliard
    cent et pas un cent, mille et pas un mille.

    J’ai laissé des éditions console sur la fin du script (Ctrl-J pour l’ouvrir sous Acrobat PRO)
    Merci pour le retour.

    #60200
    Bobard
    Membre

    Salut Alex,
    ton script est nickel en l’état merci !!
    malheureusement, je viens de voir que le fisc arrondi toujours par excès au-dessus de 0.5 et par défaut en dessous 0.5 !!
    de se faite, comment rajouter cette option ?
    @+

    #60201
    alex
    Participant

    Bonsoir,
    Ligne 3, il suffit d’utiliser la méthode suivante (arrondi):

    num=Math.round(saisie);
    Au lieu de l’arrondi par défaut
    num=Math.floor(saisie);

    Voir maquette jointe.

    #60202
    Merlin
    Maître des clés

    num=Math.round(saisie);
    num=Math.floor(saisie);

    Connais-tu une bonne documentation à propos des Math.round, Math.floor, etc. ?

    #60203
    alex
    Participant

    J’utilise ce petit livre que l’on trouve chez Eyrolles à Paris ou ailleurs:
    JavaScript
    de David Flanagan (Auteur), James Guérin (Traduction) Édition : O’Reilly.

    Une bonne adresse à retenir: http://javascript.developpez.com/cours/
     

    #60204
    Merlin
    Maître des clés

    J’utilise ce petit livre que l’on trouve chez Eyrolles à Paris ou ailleurs:
    JavaScript de David Flanagan (Auteur)

    Je viens de le commander.
    :geek:

    #60205
    Bobard
    Membre

    Bsr Alex et Merlin,
    Alex ton exemple de 122,55 me donne un arrondi à 122€ !!
    hors je cherche a avoir un résultat à 123 € (arrondi par excès au-dessus de 0.5, et par défaut en dessous de 0.5) ?
    possible ou pas ?
    @+

    #60206
    Merlin
    Maître des clés

    Ben moi j’ai reçu mon bouquin hier, mais en ce concerne les histoires d’arrondis je suis hors-jeu.  :joker:

    #60207
    alex
    Participant

    Bonjour à tous,
    Ligne 3 de mon script vous pouvez tester les trois variantes :

    num=Math.round(saisie);
    (arrondi au plus près comme dans mon dernier script)
    saisie de 122,55 donne 123 ,

    saisie de 122,45 donne 122

    num=Math.floor(saisie);
    (arrondi par défaut)

    saisie de 122,55 donne 122
    ,
    saisie de 122,45 donne 122

    num=Math.ceil(saisie);
    (arrondi par excès)
    saisie de 122,55 donne 123
    ,
    saisie de 122,45 donne 123

    Ci-joint exemple avec Math.round

    #60208
    Bobard
    Membre

    Bjr Alex,
    tes arrondis sont nickel Merci !!
    cependant je viens de voir un bug pour les valeurs (71,72, etc…) et (91, 92, etc…) qui me donne soixante-dix-un euros, etc… ?
    @+

    #60209
    Merlin
    Maître des clés

    qui me donne soixante-dix-un euros, etc… ?

    C’est effectivement plus facilement gérable avec septante… Les suisses sont malins !
    D’ailleurs pour ce qui est de savoir compter je crois qu’on peut leur faire confiance, ils n’ont plus rien à prouver.
    :Smiley03:

    #60210
    Bobard
    Membre

    Bjr,
    je n’arrive pas a modifier le script en conséquence !?
    help me ?
    @+

    #60211
    alex
    Participant

    Bonsoir,
    Désolé pour l’attente.
    Merci de faire les tests. Cette maquette pourra être améliorée dans une prochaine version (choix de l’écriture belge ou française, niveau d’arrondi)
    Cordialement.

    Alex

    #60212
    Bobard
    Membre

    C’est nikel merci !!

Affichage de 18 réponses de 1 à 18 (sur un total de 18)
  • Vous devez être connecté pour répondre à ce sujet.