Java: convertir la somme de facture en lettre
Résolu
adelguen
Messages postés
64
Date d'inscription
Statut
Membre
Dernière intervention
-
JEMLI_Monaam Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
JEMLI_Monaam Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Java: convertir la somme de facture en lettre
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
5 réponses
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
Merci JAVA
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;
}
}
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;
}
}
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question