Quiero truncar un flotador y un doble valor en java.

Siguientes son mis requisitos:
1. si tengo 12.49688 f, que debe ser impreso como 12.49 sin redondeo
2. si es 12.456 en doble, que debe ser impreso como 12.45 sin redondeo
3. En cualquier caso, si el valor es como 12.0, debe ser impreso como 12.

condición 3 es para siempre en la mente.Debe ser concurrente con el truncamiento de la lógica.

OriginalEl autor Azfar | 2012-04-26

6 Comentarios

  1. 21

    probar esto-

    DecimalFormat df = new DecimalFormat("##.##");
    df.setRoundingMode(RoundingMode.DOWN);
    System.out.println(df.format(12.49688f));
    System.out.println(df.format(12.456));
    System.out.println(df.format(12.0));

    Aquí, estamos usando decimales formateador para formatear. El roundmode se establece ABAJO, para que no se auto-ronda el lugar decimal.

    El resultado esperado es:

    12.49
    12.45
    12
    La localización se aplica para el ejemplo. Dependiendo de la configuración regional predeterminada, la salida sería 12,49 por ejemplo.

    OriginalEl autor Kshitij

  2. 4
    double d = <some-value>;
    System.out.println(String.format("%.2f", d - 0.005);

    OriginalEl autor Prizoff

  3. 4

    Tengo el mismo problema con Android, se puede utilizar en su lugar:

    DecimalFormat df = new DecimalFormat("##.##");
    df.setRoundingMode(RoundingMode.DOWN);

    pero para este Nivel de API 9 es necesario.

    Otra solución rápida es:

    double number = 12.43543542;
    int aux = (int)(number*100);//1243
    double result = aux/100d;//12.43

    OriginalEl autor titusfx

  4. 1

    echar un vistazo con DecimalFormat() :

    DecimalFormat df = new DecimalFormat("#.##");
    DecimalFormatSymbols dfs = new DecimalFormatSymbols();
    dfs.setDecimalSeparator(',');
    df.setDecimalFormatSymbols(dfs);
    Cambiar el uso de # en lugar de 0 y funcionaría como se especifica.

    OriginalEl autor revo

Dejar respuesta

Please enter your comment!
Please enter your name here