Java中的双十进制格式

我有一些格式化双精度小数的问题。 如果我有一个双重值,例如4.0,我如何格式化小数,所以它是4.00而不是?

其中一种方法是使用NumberFormat 。

 NumberFormat formatter = new DecimalFormat("#0.00"); System.out.println(formatter.format(4.0)); 

输出:

4.00

使用Java 8,您可以使用format方法..: –

 System.out.format("%.2f", 4.0); // OR System.out.printf("%.2f", 4.0); 
  • f用于floating值。
  • 小数点后2表示小数点后的位数.

对于大多数Java版本,您可以使用DecimalFormat : –

  DecimalFormat formatter = new DecimalFormat("#0.00"); double d = 4.0; System.out.println(formatter.format(d)); 

使用String.format :

String.format("%.2f", 4.52135);

使用String.format,你可以这样做:

 double price = 52000; String.format("$%,.2f", price); 

注意这个和@ Vincent的答案不一样的逗号

输出:

$52,000.00

格式化的好资源是关于这个主题的官方 Java页面

你总是可以使用printf from System.out的静态方法printf from System.out – 然后执行相应的格式化程序; 这节省了其他示例要求您执行的堆空间。

例如:

 System.out.format("%.4f %n", 4.0); System.out.printf("%.2f %n", 4.0); 

保存堆空间这是一个非常大的奖励,但我认为这个例子比任何其他答案都更易于pipe理,特别是因为大多数程序员知道来自C的printf函数(Java稍微改变了函数/方法)。

 new DecimalFormat("#0.00").format(4.0d); 
 double d = 4.0; DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH); System.out.println(nf.format("#.##")); 

工程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)); } } 

另一种方法是使用NumberFormat类中的setMinimumFractionDigits方法。

在这里你基本上指定了你想在小数点后面出现多less个数字。

所以4.0的input会产生4.00 ,假设你指定的数量是2。

但是,如果您的Doubleinput包含超过指定的金额,它将采取指定的最低金额,然后再加一个数字向上/向下舍入

例如, 4.15465454与最小数量2指定将产生4.155

 NumberFormat nf = NumberFormat.getInstance(); nf.setMinimumFractionDigits(2); Double myVal = 4.15465454; System.out.println(nf.format(myVal)); 

在线试用

首先导入NumberFormat 。 然后添加这个:

 NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance(); 

这将给你两位小数,如果它正在处理货币,就会放一个美元符号。

 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)); } } 

你可以这样做:

 double d = 4.0; DecimalFormat df = new DecimalFormat("#.##"); System.out.print(df.format(d)); 

我知道这是一个老话题,但是如果你真的喜欢用句号而不是逗号,只需要把结果保存为X,00就可以保存为一个string,然后只需要改变一段时间就可以得到X.00

最简单的方法就是使用replace。

 String var = "X,00"; String newVar = var.replace(",","."); 

输出将是你想要的X.00 。 另外,为了简单起见,您可以将它们全部整合在一起,并将其保存为双重variables:

 Double var = Double.parseDouble(("X,00").replace(",","."); 

我知道这个答复现在没有用,但也许有人检查这个论坛将寻找这样的快速解决scheme。