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。
但是,如果您的Double
input包含超过指定的金额,它将采取指定的最低金额,然后再加一个数字向上/向下舍入
例如, 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。