Puntos decimales y separador de miles en Java

Quien nunca ha necesitado dar un formato a sus números ya sean estos Integer, Double o String. Para los que necesitan poner los puntos decimales o separador de miles a los números en Java aqui les dejo un pequeño código que a mi me ayudo a realizar.

String valor = "1000";
Int v = 1000000
DecimalFormat formatea = new DecimalFormat("###,###.##");

System.outprintln(formatea.format(valor));
//Nos devuelve 1.000
System.out.println(formate.format(v));
//Nos devuelve 1.000.000

9 comentarios en “Puntos decimales y separador de miles en Java”

  1. Cordial saludo después de hacer tantas pruebas y mirando que los números double me estaban presentando inconvenientes decidí hacer un método que me permitía eliminar el punto flotante y me hace el separador de miles hasta con 13 caracteres lo que da como dato
    999.999.999.999 una cantidad considerable sin margenes de error hay les comparto el código para que sea de utilidad para otros colegas programadores.

    public static String ponerPuntos(String dato){
    if(dato==null) return «0»;
    if(dato.equals(«»)) return «0»;
    if(dato.equals(«0»)) return «0»;
    if(dato.equals(«null»)) return «0»;
    String dato1=»»;
    char []aux1=dato.toCharArray();
    for(int i=0;i<aux1.length;i++){
    if(aux1[i]!='.' && aux1[i]!=',')
    dato1=dato1+String.valueOf(aux1[i]);
    else
    i=aux1.length+2;
    }
    char []aux=dato1.toCharArray();
    String str=dato1;
    String salida="";
    int longitud = str.length();
    if(longitud <4) return dato1;
    if (longitud ==4){
    String sub2=str.substring(0,1);
    String sub1=str.substring(1,4);
    salida=sub2+"."+sub1;
    }
    if (longitud ==5){
    String sub2=str.substring(0,2);
    String sub1=str.substring(2,5);
    salida=sub2+"."+sub1;
    }
    if (longitud ==6){
    String sub2=str.substring(0,3);
    String sub1=str.substring(3,6);
    salida=sub2+"."+sub1;
    }
    if (longitud ==7 ){
    String sub2=str.substring(0,1);
    String sub1=str.substring(1,4);
    String sub0=str.substring(4,7);
    salida=sub2+"."+sub1+"."+sub0;
    }
    if (longitud ==8 ){
    String sub2=str.substring(0,2);
    String sub1=str.substring(2,5);
    String sub0=str.substring(5,8);
    salida=sub2+"."+sub1+"."+sub0;
    }
    if (longitud ==9 ){
    String sub2=str.substring(0,3);
    String sub1=str.substring(3,6);
    String sub0=str.substring(6,9);
    salida=sub2+"."+sub1+"."+sub0;
    }
    if (longitud ==10 ){
    String sub2=str.substring(0,1);
    String sub1=str.substring(1,4);
    String sub0=str.substring(4,7);
    String sub=str.substring(7,10);
    salida=sub2+"."+sub1+"."+sub0+"."+sub;
    }
    if (longitud ==11 ){
    String sub2=str.substring(0,2);
    String sub1=str.substring(2,5);
    String sub0=str.substring(5,8);
    String sub=str.substring(8,11);
    salida=sub2+"."+sub1+"."+sub0+"."+sub;
    }
    if (longitud ==12 ){
    String sub2=str.substring(0,3);
    String sub1=str.substring(3,6);
    String sub0=str.substring(6,9);
    String sub=str.substring(9,12);
    salida=sub2+"."+sub1+"."+sub0+"."+sub;
    }
    if (longitud ==13 ){
    String sub2=str.substring(0,1);
    String sub1=str.substring(1,4);
    String sub0=str.substring(4,7);
    String sub=str.substring(7,10);
    String su=str.substring(10,13);
    salida=sub2+"."+sub1+"."+sub0+"."+sub+"."+su;
    }
    return salida;
    }

    que tengan un excelente dia y que este aporte sea de su utilidad, se despide cordial mente
    Raymond Sanabria
    Ingeniero de Sistemas/ Desarrollador de Aplicaciones
    315 5221455
    colombia

    1. public String formatea(String value, char sep) {
      char[] aux = value.toCharArray();
      String result = «»;
      int cont = 0;
      for (int i = aux.length-1; i >= 0; i–) {
      result = aux[i] + result;
      if(++cont%3==0 && cont!=aux.length)
      result = sep + result;

      }
      return result;
      }

  2. public String formatea(String value, String sep) {
    String desecho = «»;
    String result = «»;
    boolean esPosible=false;

    if(value.contains(«.»)){
    String[] numero = value.split(«\\.»);
    if(numero.length > 2){
    esPosible=false;
    }else{
    desecho = numero[1];
    value =numero[0];
    esPosible=true;
    }
    }
    if(value.contains(«,»)){
    String[] numero = value.split(«,»);
    if(numero.length > 2){
    esPosible=false;
    }else{
    desecho = numero[1];
    value =numero[0];
    esPosible=true;
    }
    }

    if(esPosible){
    char[] aux = value.toCharArray();
    int cont = 0;
    for (int i = aux.length-1; i >= 0; i–) {
    result = aux[i] + result;
    if(++cont%3==0 && cont!=aux.length)
    result = sep + result;
    }
    }

    if(desecho.length() > 0){
    result = result + «,»+ desecho;
    }

    return result;
    }

  3. buenas tengo un proyecto que uso un spiner para agarrar «x» cantidad y multiplicarla por «y» cantidad pero tengo un inconveniente que en el spiner «x» no me deja meter decimales osea introdusco «0.230» y me pone «230» como podria corregir esto muchas gracias

    1. estimado los spiner solo agarran datos de tipo int (enteros) para agarrar datos con decimal ( double o float) podes ocupar el FormattedField

  4. Buenas a todos, pregunta: ya tengo un separador de miles dentro de un evento de dos textfields, al querer obtener la suma de estos dos números de cada caja de texto y volcarlo a otro textfield con el mismo separador de miles, sólo me arroja el resultado hasta el punto. Por ejemplo si tengo txt1 = 12.000 + txt2 = 10.000 . La caja de texto con el resultado me arroja 22 nada más.
    Desde ya les agradezco

Responder a Martín Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.