Convertier un montant en chiffre en toutes lettre

Soyez le premier à donner votre avis sur cette source.

Vue 8 640 fois - Téléchargée 2 028 fois

Description

ce code permet la conversion d'un montant en toute lettre. il peut aussi être améliorée par une gestion d’exception
exemple d'utilisation:
ConvertierMontantEnLettre c = new ConvertierMontantEnLettre(); // instantiation
c.setMontant("195222.55"); // le montant a convertir
c.calculer_glob(); // lancement de la covertion
System.out.println(c.getMontant() + " : " +c.getMontantLettre()); // afficher le resultat

Source / Exemple :


package pack;
/**
 *

  • @author medkhd
  • /
public class ConvertierMontantEnLettre { private String[] group_unit = {"", "un", "deux", "trois", "quatre", "cinq", "six", "sept", "huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", "dix huit", "dix neuf"}; private String[] group_diz = {"", "dix", "vingt", "trente", "quarante", "cinquante", "soixante", "", "quatre vingt"}; private String[] group_cent = {"", "cent", "mille", "million", "milliard"}; private String[] group_mi = {"", "mille", "million", "milliard"}; private String montantLettre = ""; private String montant = "0.00"; private long partieEnt = 0; private int partieFraq = 0; private String unite; private String sousUnite; String getMontant() { return montant; } public String getSousUnite() { return sousUnite; } public void setSousUnite(String sousUnite) { this.sousUnite = sousUnite; } public String getUnite() { return unite; } public void setUnite(String unite) { this.unite = unite; } public void setMontant(String montantChiffre) { montant = montantChiffre; String[] split = montantChiffre.split("\\."); this.partieEnt = Long.parseLong(split[0]); this.partieFraq = Integer.parseInt(split[1]); } public String getMontantLettre() { return montantLettre; } private String calculer(int val) { int r = val % 100; int d = val / 100; String s = ""; if (r < 20) { s = group_unit[r]; } else { int r1 = r % 10; int r2 = r / 10; if (r2 < 7 || r2 == 8) { s = group_diz[r2]; if (r2 == 8 && r1 == 0) { s += "s"; } s += " " + group_unit[r1]; } else { s = group_diz[r2 - 1] + " " + group_unit[r1 + 10]; } } if (d != 0) { s = group_cent[1] + " " + s; if (d > 1) { s = group_unit[d] + " " + s; } } return s; } public void calculer_glob() { int i = 0; int r = 0; long nb = partieEnt; String s = ""; montantLettre = ""; do { r = (int) (nb % 1000); nb = nb / 1000; if (r != 0) { if (r == 1 && i == 1) { s = group_mi[i]; } else { s = calculer(r) + " " + group_mi[i]; } } montantLettre = s + " " + montantLettre; i++; } while (nb != 0); if (partieFraq != 0) { montantLettre = montantLettre + " " + unite + "(s) et " + calculer(partieFraq) + " " + sousUnite + "(s)"; } } public ConvertierMontantEnLettre() { unite = "Euro"; sousUnite = "centime"; } public ConvertierMontantEnLettre(String unite, String sousUnite) { this.unite = unite; this.sousUnite = sousUnite; } public static void main(String[] args) { for (int i = 0; i < 100000; i++) { ConvertierMontantEnLettre c = new ConvertierMontantEnLettre(); c.setMontant("" + i + ".00"); c.calculer_glob(); System.out.println(c.getMontant() + " : " + c.getMontantLettre()); } } }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

merci sa ma bcp aidé
Merci JEANCLEMENT, de porter a mon attention la règle du 80
voici la modif pour qu'elle soit prise en compte ^^
-----------------------------------------------------
if (r2 < 7 || r2 == 8) {
s = group_diz[r2]; if (r2 8 && r1 0) {
s += "s";
}
s += " " + group_unit[r1];
}
---------------------------------------------------
Et la règle du 80 avec le "s" (idem pour "cent"), "quatre-vingts" - "quatre-vingt un". Je n'ai pas testé le script, mais je ne le vois pas. J'ai fait un équivalent en javascript pour montrer à mon fils ce qu'est la programmation. Je peux le fournir si quelqu'un le demande.
Messages postés
69
Date d'inscription
mardi 11 avril 2006
Statut
Membre
Dernière intervention
23 juillet 2013

Merci pour le code
Merci pour le code
ça fait un bon moment que je le cherche mais j'ai rien trouvé
tu me sauve ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.