Java: convertir la somme de facture en lettre

Résolu/Fermé
adelguen Messages postés 64 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 1 décembre 2011 - 18 juin 2008 à 10:51
JEMLI_Monaam Messages postés 3 Date d'inscription samedi 22 décembre 2012 Statut Membre Dernière intervention 11 mai 2013 - 22 déc. 2012 à 23:06
Bonjour,
Je suis entrain de realiser un logiciel de gestion de stock et de facturation.
je suis arrivée à la stade de génération des factures.
j'ai besoin d'un code java pour converir la somme total de ma facture en lettres .
exemple 1900,500euro sera traduit en neuf cents euro et cinq cents centes.

Merci pour l'aide.
A voir également:

5 réponses

adelguen Messages postés 64 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 1 décembre 2011 13
20 août 2008 à 09:25
bien j'ai trouvé la solution sur un autre forum, (hereusement). La version est satndard j'ai fait quelques changement mais l'essentiel est présent. dans tous les cas merci à tous ceux qui ont pensé m'aider je posterai la solution dans ma prochaine connection. je suis en voyage pour le moment.
Merci JAVA
3
adelguen Messages postés 64 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 1 décembre 2011 13
22 déc. 2008 à 10:49
trous personne besoin du solution peut m'envoyer uin mail à adoula.aguen at laposte.net
1
adelguen Messages postés 64 Date d'inscription jeudi 14 juin 2007 Statut Membre Dernière intervention 1 décembre 2011 13
28 févr. 2009 à 12:03
voila la solution:
on peut faire appel au nombre.java comme suit
String text=new Nombre().begin(""+totalx);
avec totalx est un float;
le fichier NOMBRE.java:

package .......;

/**
* <p>Title: ........</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2008</p>
* <p>Company: Adel Gnaoui</p>
* @author Adel Gnaoui
* @version 1.0
*/

/*public class Nombre {
public Nombre() {
}
public static void main(String[] args) {
Nombre nombre1 = new Nombre();
}

}*/
public class Nombre
{
/**
* Représentaion en lettre de 0
*/


public static final String ZERO="zéro";
/**
* Représentaion en lettre de 1
*/
public static final String UN="un";
/**
* Représentaion en lettre de 2
*/
public static final String DEUX="deux";
/**
* Représentaion en lettre de 3
*/
public static final String TROIS="trois";
/**
* Représentaion en lettre de 4
*/
public static final String QUATRE="quatre";
/**
* Représentaion en lettre de 5
*/
public static final String CINQ="cinq";
/**
* Représentaion en lettre de 6
*/
public static final String SIX="six";
/**
* Représentaion en lettre de 7
*/
public static final String SEPT="sept";
/**
* Représentaion en lettre de 8
*/
public static final String HUIT="huit";
/**
* Représentaion en lettre de 9
*/
public static final String NEUF="neuf";

/**
* Représentaion en lettre de 10
*/
public static final String DIX="dix";
/**
* Représentaion en lettre de 11
*/
public static final String ONZE="onze";
/**
* Représentaion en lettre de 12
*/
public static final String DOUZE="douze";
/**
* Représentaion en lettre de 13
*/
public static final String TREIZE="treize";
/**
* Représentaion en lettre de 14
*/
public static final String QUATORZE="quatorze";
/**
* Représentaion en lettre de 15
*/
public static final String QUINZE="quinze";
/**
* Représentaion en lettre de 16
*/
public static final String SEIZE="seize";

/**
* Représentaion en lettre de 20
*/
public static final String VINGT="vingt";
/**
* Représentaion en lettre de 30
*/
public static final String TRENTE="trente";
/**
* Représentaion en lettre de 40
*/
public static final String QUARANTE="quarante";
/**
* Représentaion en lettre de 50
*/
public static final String CINQUANTE="cinquante";
/**
* Représentaion en lettre de 60
*/
public static final String SOIXANTE="soixante";

/**
* Représentaion en lettre de 100
*/
public static final String CENT="cent";
public static final String CENTS="cents";
/**
* Représentaion en lettre de 1000
*/
public static final String MILLE="mille";
/**
* Représentaion en lettre de 1000000
*/
public static final String MILLION="million";
/**
* Représentaion en lettre de 1000000000
*/
public static final String MILLIARD="milliard";

/**
* Représentaion en lettre de -
*/
public static final String MOINS="moins";

//Nom des différents types de paquet de nombre
private static final String[] tab={"",MILLE,MILLION,MILLIARD,MILLE+" "+MILLIARD,
MILLION+" de "+MILLIARD,MILLIARD+" de "+MILLIARD};

/**
* Renvoie la représentation en lettre d'un chiffre, c'est à dire d'un nombre ente 0 et 9
*/
public static String getChiffre(int l)
{
if((l<0)||(l>9))
throw new IllegalArgumentException("Un chiffre est entre 0 et 9, donc "+l+" est interdit");
switch(l)
{
case 0 :
return ZERO;
case 1 :
return UN;
case 2 :
return DEUX;
case 3 :
return TROIS;
case 4 :
return QUATRE;
case 5 :
return CINQ;
case 6 :
return SIX;
case 7 :
return SEPT;
case 8 :
return HUIT;
case 9 :
return NEUF;
}
return null;
}

//Retourne la représentation en lettre d'un paquet. Un paquet est formé de tois chiffres, comme 123, 012, 001, 100, 101,...
private static String paquet(int p)
{
//On initialise la réponse
String reponse="";
//Si on a un chiffre des centaines
// if(p>100)
if(p>=100)
{

//Si la valeur est >199 alors, on va mettre devant le chiffre des centaine
if(p/100>1)
reponse=getChiffre(p/100)+" ";
//C'est une centaine, donc on ajoute ensuite "cent"
if (p/100>1)
//tous les cent s'ecrivent sans s
//reponse += CENTS+" ";
reponse += CENT+" ";
else
reponse += CENT+" ";
//On récupére ce qui n'est pas la centaine
p=p%100;
}
//c chiffre des dizaines
//u chaiffre des unitées
int c=p/10;
int u=p%10;
switch(c)
{
//Si la dizaine est nule, alors le nombre est un chiffre
case 0 :
if(u!=0)
reponse += getChiffre(u);
break;
case 1 :
switch(u)
{
case 0 :
reponse += DIX;
break;
case 1 :
reponse += ONZE;
break;
case 2 :
reponse += DOUZE;
break;
case 3 :
reponse += TREIZE;
break;
case 4 :
reponse += QUATORZE;
break;
case 5 :
reponse += QUINZE;
break;
case 6 :
reponse += SEIZE;
break;
default :
reponse += DIX+" "+getChiffre(u);
}
break;
case 2 :
reponse += VINGT;
if(u==1)
reponse += " et";
if(u>0)
reponse += " "+getChiffre(u);
break;
case 3 :
reponse += TRENTE;
if(u==1)
reponse += " et";
if(u>0)
reponse += " "+getChiffre(u);
break;
case 4 :
reponse += QUARANTE;
if(u==1)
reponse += " et";
if(u>0)
reponse += " "+getChiffre(u);
break;
case 5 :
reponse += CINQUANTE;
if(u==1)
reponse += " et";
if(u>0)
reponse += " "+getChiffre(u);
break;
case 6 :
reponse += SOIXANTE;
if(u==1)
reponse += " et";
if(u>0)
reponse += " "+getChiffre(u);
break;
case 7 :
reponse += SOIXANTE+" ";
if(u==1)
reponse += " et";
switch(u)
{
case 0 :
reponse += DIX;
break;
case 1 :
reponse += ONZE;
break;
case 2 :
reponse += DOUZE;
break;
case 3 :
reponse += TREIZE;
break;
case 4 :
reponse += QUATORZE;
break;
case 5 :
reponse += QUINZE;
break;
case 6 :
reponse += SEIZE;
break;
default :
reponse += DIX+" "+getChiffre(u);
}
break;
case 8 :
//reponse += QUATRE+" "+VINGT;
reponse += QUATRE+"-"+VINGT;
if(u>0)
reponse += " "+getChiffre(u);
break;
case 9 :
reponse += QUATRE+"-"+VINGT+" ";
switch(u)
{
case 0 :
reponse += DIX;
break;
case 1 :
reponse += ONZE;
break;
case 2 :
reponse += DOUZE;
break;
case 3 :
reponse += TREIZE;
break;
case 4 :
reponse += QUATORZE;
break;
case 5 :
reponse += QUINZE;
break;
case 6 :
reponse += SEIZE;
break;
default :
reponse += DIX+"-"+getChiffre(u);
//reponse += DIX+" "+getChiffre(u);
}
break;
}
//On renvoie la réponse, à laquelle on retire les éventuels espaces surperflus
return reponse.trim();
}

/**
* Renvoie le nombre en lettre, <BR>
* ex: 1234567890 devient : un milliard deux cent trente quatre million cinq cent soixante sept mille huit cent quatre vingt dix
*/
public static String getLettre(long l)
{
//Cas zéro
if(l==0L)
return ZERO;
String signe="";
//Cas négatif
if(l<0L)
{
//On prned la valeur absolue
l=-l;
//On ajoutera moins devant
signe=MOINS+" ";
}
//Initilisation de la réponse
String reponse="";
//Rang du paquet actuel, on va parcourir le nombre de gauche à droite, le premier paquet de 123456 sera donc : 456
int rang=0;
while(l>0L)
{
//on ajoute le paquet devant la réponse
if (((int)(l%1000L))>0){
reponse = paquet( (int) (l % 1000L)) + " " + tab[rang] + " " + reponse;
}
else{
reponse = paquet( (int) (l % 1000L)) + " " + reponse;
}
/* /* private static final String[] tab={"",MILLE,MILLION,MILLIARD,MILLE+" "+MILLIARD,
MILLION+" de "+MILLIARD,MILLIARD+" de "+MILLIARD};*/
System.out.println(""+reponse);
//on passe au paquet suivant
l=l/1000L;
rang++;
}
//on ajoute le signe éventuel
reponse=signe+reponse;
//On renvoie la réponse, à laquelle on retire les éventuels espaces surperflus
return reponse.trim();
}
public static String getLettre(int l)
{
//Cas zéro
if(l==0)
return ZERO;
String signe="";
//Cas négatif
if(l<0)
{
//On prned la valeur absolue
l=-l;
//On ajoutera moins devant
signe=MOINS+" ";
}
//Initilisation de la réponse
String reponse="";
//Rang du paquet actuel, on va parcourir le nombre de gauche à droite, le premier paquet de 123456 sera donc : 456
int rang=0;
while(l>0L)
{
//on ajoute le paquet devant la réponse
reponse=paquet((int)(l%1000))+" "+tab[rang]+" "+reponse;
//on passe au paquet suivant
l=l/1000;
rang++;
}
//on ajoute le signe éventuel
reponse=signe+reponse;
//On renvoie la réponse, à laquelle on retire les éventuels espaces surperflus
return reponse.trim();
}


public static void main(String args[])
{
Nombre nombre1 = new Nombre();
}
public static String begin(String nbre){
String txt="";
String valx="";
String valy="";
int x=0;
//String nbr="12.693";
String nbr=nbre;
x=nbr.indexOf(".");
valx=nbr.substring(0,x);
valy=nbr.substring(x+1,nbr.length());
System.out.println("==="+valx);
System.out.println("==="+valy);
String xx=""+valy;
if( xx.length()==1){
valy=valy+"00";
}
if( xx.length()==2){
valy=valy+"0";
}
System.out.println("==="+valx);
System.out.println("==="+valy);


long ax=Long.parseLong(valx);
int ay=Integer.parseInt(valy);

// pour mille : il ecrit un mille ???enlever le un : 100000 : il ecrit mille : et oublie le cent; 1000000 : il ecrit un million mille dinars ??? un million dinars ç tout ; de meme pour 10 million

if(x!=-1)
{

System.out.println(""+getLettre(ax)+" Dinars et "+getLettre(ay)+" Millimes");
txt="Arreté la présente facture à la somme de "+getLettre(ax)+" Dinars et "+getLettre(ay)+" Millimes";
}

else
{

System.out.println(""+getLettre(ax)+" Dinars ");
txt="Arreté la présente facture à la somme de "+getLettre(ax)+" Dinars ";
}
return txt;
}


}
1
JEMLI_Monaam Messages postés 3 Date d'inscription samedi 22 décembre 2012 Statut Membre Dernière intervention 11 mai 2013
22 déc. 2012 à 23:04
Bonjour :


double num = 2718.28;
NumberFormat formatter = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);
// NumberFormat formatter = new RuleBasedNumberFormat(Locale.FRANCE, RuleBasedNumberFormat.SPELLOUT);
String result = formatter.format(num);
System.out.println(result);

// résultat avec Locale.ENGLISH : two thousand seven hundred and eighteen point two eight
// résultat avec Locale.GERMAN : zwei tausend sieben hundert achtzehn Komma zwei acht
// résultat avec Locale.FRANCE : deux-mille-sept-cent-dix-huit virgule deux huit
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JEMLI_Monaam Messages postés 3 Date d'inscription samedi 22 décembre 2012 Statut Membre Dernière intervention 11 mai 2013
22 déc. 2012 à 23:06
NumberFormat formatter = new RuleBasedNumberFormat(RuleBasedNumberFormat.SPELLOUT);

String result = formatter.format(num);
System.out.println(result);
0