我遇到了一些格式化 double 类型小数的问题。如果我有一个 double 值,例如 4.0,如何格式化小数部分,使其变成 4.00?
我遇到了一些格式化 double 类型小数的问题。如果我有一个 double 值,例如 4.0,如何格式化小数部分,使其变成 4.00?
一种方法是使用NumberFormat。
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(4.0));
输出:
4.00
NumberFormat formatter = new DecimalFormat("#,000.00"); System.out.println(formatter.format(4.0));
- Jose Mhlanga使用Java 8,你可以使用format
方法..: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
用于表示浮点数。2
在小数点后表示保留的小数位数。对于大多数 Java 版本,您可以使用 DecimalFormat
:
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
使用 String.format,您可以这样做:
double price = 52000;
String.format("$%,.2f", price);
注意逗号,这使得它与 @Vincent 的答案不同
输出:
$52,000.00
格式化的好资源是有关此主题的官方Java页面。
System.out.format("%.4f %n", 4.0);
System.out.printf("%.2f %n", 4.0);
System.out
是 PrintStream
的静态实例,因此在使用 System.out
时可以访问 PrintStream
的方法。 - Bazdouble d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));
If you are using java.text.DecimalFormat
DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance();
decimalFormat.setMinimumFractionDigits(2);
System.out.println(decimalFormat.format(4.0));
OR
DecimalFormat decimalFormat = new DecimalFormat("#0.00");
System.out.println(decimalFormat.format(4.0));
If you want to convert it into simple string format
System.out.println(String.format("%.2f", 4.0));
以上代码将打印4.00
new DecimalFormat("#0.00").format(4.0d);
NumberFormat
类的setMinimumFractionDigits
方法。4.0
将产生4.00
,假设您指定的数量为2。Double
输入包含的数字超过了指定的数量,它将取最小指定数量,然后再加上一个四舍五入的数字。4.15465454
将产生4.155
。NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));
有很多方法可以做到这一点。以下是其中一些:
假设您的原始数字如下:
Original Answer翻译成: "最初的回答"
double number = 2354548.235;
使用NumberFormat:
NumberFormat formatter = new DecimalFormat("#0.00");
System.out.println(formatter.format(number));
使用String.format:
System.out.println(String.format("%,.2f", number));
使用DecimalFormat和pattern:
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(number);
System.out.println(fString);
使用DecimalFormat和模式
DecimalFormat decimalFormat = new DecimalFormat("############.##");
BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
System.out.println(formattedOutput);
RoundingMode
。以下是一些舍入模式: decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
以下是需要导入的内容:
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
String.format()
或java.text.Format
。 - Code-Apprentice