Entier en lettres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 364 fois - Téléchargée 30 fois

Contenu du snippet

Voici un petit code qui transforme un entier en lettre (ex: 2000 ==> deux mille).

Source / Exemple :


/**Méthopde permettant de convertir l'entier sous forme de lettres

  • @param intToString valeur entiére qu'on veut sous forme de chaine
  • @return Nombre sous forme de lettres*/
public static String convertIntToString(int intToString){ int valeur = intToString; String result = ""; if(valeur < 0){ result = "-"; valeur = -1 * valeur; //On le met en positif } //Nous allons commencer par convertir les chiffres supérieure à 1 000 000 000 if(valeur > 1000000000){ int valeurSupMilliard = (int)valeur / 1000000000; result = result + " " + convertIntToString(valeurSupMilliard) + " milliard"; valeur = valeur - (valeurSupMilliard * 1000000000); } //Nous allons convertir les chifres entre 1 000 000 et 999 999 999 if(valeur > 1000000){ int valeurMillion = (int)valeur / 1000000; result = result + " " + convertIntToString(valeurMillion) + " million"; valeur = valeur - (valeurMillion * 1000000); } //Nous allons convertir les chiffres entre 1000 et 999 999 if(valeur > 1000){ int valeurMille = (int)valeur / 1000; if(valeurMille > 1){ result = result + " " + convertIntToString(valeurMille) + " mille"; } else{ result = result + " mille"; } valeur = valeur - (valeurMille * 1000); } //Nous allons convertir les chiffres entre 100 et 999 if(valeur > 100){ int valeurCent = (int)valeur / 100; if(valeurCent > 1){ result = result + " " + convertIntToString(valeurCent) + " cent"; } else{ result = result + " cent"; } valeur = valeur - (valeurCent * 100); } //Nous allons convertir les chiffres entre 0 et 99 switch(valeur){ case 0 : if(result == "" || result == "-"){ result = "zéro"; } break; case 1 : result = result + " un"; break; case 2 : result = result + " deux"; break; case 3 : result = result + " trois"; break; case 4 : result = result + " quatre"; break; case 5 : result = result + " cinq"; break; case 6 : result = result + " six"; break; case 7 : result = result + " sept"; break; case 8 : result = result + " huit"; break; case 9 : result = result + " neuf"; break; case 10 : result = result + " dix"; break; case 11 : result = result + " onze"; break; case 12 : result = result + " douze"; break; case 13 : result = result + " treize"; break; case 14 : result = result + " quatorze"; break; case 15 : result = result + " quinze"; break; case 16 : result = result + " seize"; break; case 20 : result = result + " vingt"; break; case 30 : result = result + " trente"; break; case 40 : result = result + " quarante"; break; case 50 : result = result + " cinquante"; break; case 60 : result = result + " soixante"; break; case 70 : result = result + " soixante-dix"; break; case 80 : result = result + " quatre-vingts"; break; case 81 : result = result + " quatre-vingts un"; break; case 90 : result = result + " quatre-vingts-dix"; break; case 91 : result = result + " quatre-vingts onze"; break; default : int valeurDizaine = (valeur / 10) * 10; int valeurUnite = valeur % 10; //Les valeurs entre 16 et 20, 70 et 80, et entre 90 et 100 sont des cas //particuliers, nous devons faire un triatment particulier if((valeur > 16 && valeur < 20) || (valeur > 70 && valeur < 80) || (valeur > 90 && valeur < 100)){ valeurDizaine -= 10; valeurUnite += 10; } if(valeurDizaine == 0){ result = result + " " + convertIntToString(valeurUnite); } else if(valeurUnite == 0){ result = result + " " + convertIntToString(valeurDizaine); } else if(valeurUnite == 1){ result = result + " " + convertIntToString(valeurDizaine) + " et " + convertIntToString(valeurUnite); } else{ result = result + " " + convertIntToString(valeurDizaine) + "-" + convertIntToString(valeurUnite); } } return result.trim(); } /**Méthode permettant de convertir le réel sous forme de lettre
  • @param realToString valeur réelle qu'on veut sous forme de chaine
  • @return Nombre sous forme de lettres*/
public static String convertRealToString(double intToString){ int valeurApresVirgule = (int)(intToString - (int)intToString); int valeurAvantVirgule = (int)(intToString - valeurApresVirgule); String result = ""; if(valeurApresVirgule == 0){ result = convertIntToString(valeurAvantVirgule); } else{ result = convertIntToString(valeurAvantVirgule) + "," + convertIntToString(valeurApresVirgule); } return result ; }

A voir également

Ajouter un commentaire Commentaires
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
20
Oups
je savais bien que je suis nul en français :/
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Attention aux fautes de syntaxe :
- 'cent' et 'vingt' ne prennent un 's' à la fin que s'ils ne sont suivis de rien (deux cents / deux cent onze)
- un tiret doit être ajouté entre chacun des mots constituant un nombre inférieur à 100 (mille deux cent quatre-vingt-deux).
Messages postés
103
Date d'inscription
lundi 9 avril 2001
Statut
Membre
Dernière intervention
16 juillet 2008

Salut sympa cette source.

Je vais chipoter mais il faut mettre :

if(valeur >= 1000000000)

au lieu de

if(valeur > 1000000000)

sinon on obtient dix cent millions au lieu d'un milliard

Idem pour million et mille

Quant à 100, j'obtiens un erreur de stackOverflow ... idem pour 98 ou 99 --> convertIntToString(98) ca plante

Donc à améliorer !
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
23 décembre 2008
20
Euh vi effectivement, ya bien une erreur, merci de me l'avoir indiquer, je corrige ca tout de suite
Messages postés
1
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
27 juin 2005

Salut,

Félicitation pour cet excellent morceau de code. Néanmoins j'ai cru relever une erreur :

int valeurMille = (int)valeur / 1000;
if(valeur > 1000){
if(valeurMille != 0) // ne faudrait-il pas marquer >1 au lieu de !=0
{
result = result + " " + convertIntToString(valeurMille) + " mille";
}
else{
result = result + " mille";
}

valeur = valeur - (valeurMille * 1000);
}


Encore bravo pour ce code.

Sesram
Afficher les 6 commentaires

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.