181 votes

insérer un caractère dans une chaîne à une certaine position

Je suis dans une int à 6 chiffres. Je veux afficher en tant qu' String avec un point décimal (.) à 2 chiffres de la fin de l' int. Je voulais utiliser un float , mais a été suggéré d'utiliser String pour un meilleur affichage de sortie (au lieu de 1234.5 sera 1234.50). Donc j'ai besoin d'une fonction qui va prendre un int comme paramètre et retourner le correctement formaté String avec une virgule 2 chiffres de la fin.

dire:

int j= 123456 
Integer.toString(j); 

//processing...

//output : 1234.56

240voto

blo0p3r Points 2106

Comme mentionné dans les commentaires, un StringBuilder est probablement une mise en œuvre plus rapide, puis à l'aide d'un StringBuffer. Comme mentionné dans le Java docs :

Cette classe fournit une API compatible avec StringBuffer, mais sans aucune garantie de la synchronisation. Cette classe est conçu pour une utilisation en baisse-dans le remplacement pour StringBuffer dans des endroits où la chaîne de la mémoire tampon a été utilisé par un seul thread (comme c'est généralement le cas). Si possible, il est recommandé que cette classe sera utilisée de préférence à StringBuffer car il sera plus rapide dans la plupart des implémentations.

Utilisation :

String str = Integer.toString(j);
str = new StringBuilder(str).insert(str.length()-2, ".").toString();

Ou si vous avez besoin de synchronisation utiliser le StringBuffer similaires d'utilisation :

String str = Integer.toString(j);
str = new StringBuffer(str).insert(str.length()-2, ".").toString();

221voto

Mike Thomsen Points 12074
int j = 123456;
String x = Integer.toString(j);
x = x.substring(0, 4) + "." + x.substring(4, x.length());

16voto

Itay Maman Points 15470
int your_integer = 123450;
String s = String.format("%6.2f", your_integer / 100.0);
System.out.println(s);

2voto

Joseph Ottinger Points 2850

Vous pourriez utiliser

 System.out.printf("%4.2f%n", ((float)12345)/100));
 

Selon les commentaires, 12345 / 100.0 serait préférable, de même que l'utilisation de double au lieu de float.

0voto

rurouni Points 1243

Si vous utilisez un système où la méthode float est coûteuse (par exemple, pas de FPU) ou non autorisée (par exemple, en comptabilité), vous pouvez utiliser quelque chose comme ceci:

     for (int i = 1; i < 100000; i *= 2) {
        String s = "00" + i;
        System.out.println(s.substring(Math.min(2, s.length() - 2), s.length() - 2) + "." + s.substring(s.length() - 2));
    }
 

Sinon, DecimalFormat est la meilleure solution. (la variante de StringBuilder ci-dessus ne fonctionnera pas avec de petits nombres (<100)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X