limitar - java formato numeros decimales
Formateo decimal doble en Java (12)
Tengo problemas para formatear los decimales de un doble. Si tengo un valor doble, por ejemplo, 4.0, ¿cómo formateo los decimales para que sean 4.00 en su lugar?
Con Java 8, puede usar el método de format
..: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
-
f
se usa para valor defloating
... -
2
después de que decimal denota, número de decimales después.
Para la mayoría de las versiones de Java, puede usar DecimalFormat
: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
Funciona al 100%.
import java.text.DecimalFormat;
public class Formatting {
public static void main(String[] args) {
double value = 22.2323242434342;
// or value = Math.round(value*100) / 100.0;
System.out.println("this is before formatting: "+value);
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
}
}
Primero importe NumberFormat
. Luego agrega esto:
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
Esto le dará dos decimales y pondrá un signo de dólar si se trata de dinero.
import java.text.NumberFormat;
public class Payroll
{
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
int hoursWorked = 80;
double hourlyPay = 15.52;
double grossPay = hoursWorked * hourlyPay;
NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
}
}
Puedes hacerlo de la siguiente manera:
double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));
Sé que este es un tema antiguo, pero si realmente te gusta tener el punto en lugar de la coma, simplemente guarda el resultado como X, 00 en una cadena y luego simplemente cámbialo por un período para que obtengas la X.00
La forma más sencilla es usar Replace.
String var = "X,00";
String newVar = var.replace(",",".");
La salida será la X.00 que deseaba. También para hacerlo más fácil, puede hacerlo todo a la vez y guardarlo en una variable doble:
Double var = Double.parseDouble(("X,00").replace(",",".");
Sé que esta respuesta no es útil en este momento, pero tal vez alguien que visita este foro busque una solución rápida como esta.
Siempre puedes usar el método estático printf from System.out
- entonces implementarías el formateador correspondiente; esto ahorra un montón de espacio en el que otros ejemplos requerían que lo hicieras.
Ex:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
Ahorra espacio en el montón, lo cual es una gran ventaja, sin embargo, creo que este ejemplo es mucho más manejable que cualquier otra respuesta, especialmente porque la mayoría de los programadores conocen la función printf de C (aunque Java también modificó ligeramente la función / método).
Un método alternativo es utilizar el método setMinimumFractionDigits
de la clase NumberFormat
.
Aquí, básicamente, especifica cuántos números quiere que aparezcan después del punto decimal.
Entonces, una entrada de 4.0
produciría 4.00
, suponiendo que tu cantidad especificada fuera 2.
Pero, si su entrada Double
contiene más de la cantidad especificada, tomará la cantidad mínima especificada, luego agregará un dígito más redondeado hacia arriba / abajo
Por ejemplo, 4.15465454
con una cantidad mínima de 2 especificada producirá 4.155
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));
Una de las formas sería usar NumberFormat .
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
Salida:
4.00
Usando String.format, puedes hacer esto:
double price = 52000;
String.format("$%,.2f", price);
Observe la coma que hace que esto sea diferente de la respuesta de @ Vincent
Salida:
$52,000.00
Un buen recurso para formatear es la página official Java sobre el tema
Use String.format :
String.format("%.2f", 4.52135);
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
new DecimalFormat("#0.00").format(4.0d);