Chr*_*fer 107 java double formatting decimal
我在格式化双精度小数时遇到了一些问题.如果我有一个双精度值,例如4.0,我如何格式化小数,使其为4.00?
kos*_*osa 206
其中一种方法是使用NumberFormat.
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
Run Code Online (Sandbox Code Playgroud)
输出:
4.00
Roh*_*ain 65
使用Java 8,您可以使用format方法..: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
Run Code Online (Sandbox Code Playgroud)
f用于floating点值..2 十进制表示后,小数位后面的位数 .对于大多数Java版本,您可以使用DecimalFormat: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
Run Code Online (Sandbox Code Playgroud)
Vin*_*rat 40
String.format("%.2f", 4.52135);
ojo*_*ifu 18
使用String.format,您可以这样做:
double price = 52000;
String.format("$%,.2f", price);
Run Code Online (Sandbox Code Playgroud)
注意这个逗号与@Vincent的答案不同
输出:
$52,000.00
格式化的良好资源是关于该主题的官方 Java页面
您总是可以使用静态方法printf from System.out- 然后您将实现相应的格式化程序; 这节省了堆空间,其他示例要求您执行此操作.
例如:
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
Run Code Online (Sandbox Code Playgroud)
保存堆空间这是一个相当大的好处,尽管如此我认为这个例子比任何其他答案都更易于管理,特别是因为大多数程序员都知道来自C的printf函数(尽管Java稍微改变了函数/方法).
double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
Run Code Online (Sandbox Code Playgroud)