lundi 21 septembre 2015

Convertir un nombre en toute lettres en java

Convertir un nombre en son équivalent alphabétique en java

 Vous est - t - il déjà arrivé dans l'un de vos multiples projets de vouloir convertir un entier ou un nombre à virgule en son équivalent alphabétique ? Casse - tête n'est ce pas ?

Pas de souci J'ai développé une librairie qui vous facilitera la tâche. Elle s'appelle converter.jar Vous pouvez l'intégrer dans vos projets java en la téléchargeant depuis le lien  conveter.jar, ou en l'intégrant dans le fichier pom.xml si vous utilisez maven. Les coordonnées maven de la librairie sont les suivantes:  
1
2
3
4
5
<dependency>
    <groupId>com.github.royken</groupId>
    <artifactId>converter</artifactId>
    <version>1.1</version>
</dependency>
Cette librairie traduit en langue française et anglaise.
Assez bavardé, passons à des exemples d'illustration.

Utilisation

Soit a le nombre que l'on veut convertir. Il suffit d'entrer le code suivant pour traduire le nombre:
1
FrenchNumberToWords.convert(a);  
Vous l'avez sûrement deviné French est mis pour français, donc si vous voulez la version anglophone, ce sera :
1
EnglishNumberToWords.convert(a);

Exemple de code complet:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import com.github.royken.converter.FrenchNumberToWords;

public class Main {
    
     /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
       
      System.out.println("*** " + FrenchNumberToWords.convert(0));
    System.out.println("*** " + FrenchNumberToWords.convert(5));
    System.out.println("*** " + FrenchNumberToWords.convert(17));
    System.out.println("*** " + FrenchNumberToWords.convert(25));
    System.out.println("*** " + FrenchNumberToWords.convert(75));
    System.out.println("*** " + FrenchNumberToWords.convert(80));
    System.out.println("*** " + FrenchNumberToWords.convert(83));
    System.out.println("*** " + FrenchNumberToWords.convert(97));
    System.out.println("*** " + FrenchNumberToWords.convert(100));
    System.out.println("*** " + FrenchNumberToWords.convert(101));
    System.out.println("*** " + FrenchNumberToWords.convert(110));
    System.out.println("*** " + FrenchNumberToWords.convert(120));
    System.out.println("*** " + FrenchNumberToWords.convert(200));
    System.out.println("*** " + FrenchNumberToWords.convert(201));
    System.out.println("*** " + FrenchNumberToWords.convert(232));
    System.out.println("*** " + FrenchNumberToWords.convert(999));
    System.out.println("*** " + FrenchNumberToWords.convert(1001));
    System.out.println("*** " + FrenchNumberToWords.convert(10000));
    System.out.println("*** " + FrenchNumberToWords.convert(10001));
    System.out.println("*** " + FrenchNumberToWords.convert(100000));
    System.out.println("*** " + FrenchNumberToWords.convert(2000000));
    System.out.println("*** " + FrenchNumberToWords.convert(3000000000L));
    System.out.println("*** " + FrenchNumberToWords.convert(2147483647));

    }
    
    
}

Le résultat

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*** zéro
*** cinq
*** dix-sept
*** vingt-cinq
*** soixante-quinze
*** quatre-vingt
*** quatre-vingt-trois
*** quatre-vingt-dix-sept
*** cent
*** cent un
*** cent dix
*** cent vingt
*** deux cents
*** deux cent un
*** deux cent trente-deux
*** neuf cent quatre-vingt-dix-neuf
*** mille un
*** dix mille 
*** dix mille un
*** cent mille 
*** deux millions 
*** trois milliards 
*** deux milliards cent quarante-sept millions quatre cent quatre-vingt-trois mille six cent quarante-sept

Pour les nombres à virgules, vous pouvez tronquer le nombre et convertir les deux parties (entière et décimale)

Exemple


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import com.github.royken.converter.FrenchNumberToWords;

/**
 *
 * @author Kenfack Valmy-Roi <roykenvalmy@gmail.com>
 */
public class Main {
    
/**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        double number = 25.87;
        int entier = (int) Math.floor(number);
        int decimal = (int) Math.floor((number - entier) * 100.0f);
        String resultat = FrenchNumberToWords.convert(entier) + ","
                + FrenchNumberToWords.convert(decimal);
        System.out.println(resultat);
    }
}

Le résultat est le suivant:

1
vingt-cinq,quatre-vingt-sept
Bien évidemment vous pouvez remplacer la virgule par un séparateur de votre choix.

Merci et à bientot pour d'autres astuces.



5 commentaires: