String.format()在Java中格式化双重格式

我如何使用String.format(format, args)格式化双精度函数,如下所示?

2354548.2352,354,548.23

431271 次浏览

这个链接提取的代码;

Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;


numberFormatter = NumberFormat.getNumberInstance(currentLocale);
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " +
currentLocale.toString());

这个例子的输出显示了相同数字的格式如何随着Locale的不同而变化:

345 987,246  fr_FR
345.987,246  de_DE
345,987.246  en_US
String.format("%1$,.2f", myDouble);

String.format自动使用默认区域设置。

public class MainClass {
public static void main(String args[]) {
System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3);


System.out.printf("Default floating-point format: %f\n", 1234567.123);
System.out.printf("Floating-point with commas: %,f\n", 1234567.123);
System.out.printf("Negative floating-point default: %,f\n", -1234567.123);
System.out.printf("Negative floating-point option: %,(f\n", -1234567.123);


System.out.printf("Line-up positive and negative values:\n");
System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123);
}
}

然后打印出来:

3 (3) +3 00003
默认浮点格式:1234567,123000
带逗号的浮点数:1.234.567,123000
负浮点数默认值:-1.234.567,123000
负浮点选项:(1.234.567,123000)

排列正负值:
1.234.567 12 < br > 1.234.567 12 < / p >

如果你想用手动设置的符号格式化它,使用这个:

DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
decimalFormatSymbols.setGroupingSeparator(',');
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols);
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25

但是,基于区域设置的格式是首选的。

String.format("%4.3f" , x) ;
这意味着我们在ans中需要总共4位数字,其中3位应该在decimal之后。 f是double的格式说明符。X表示我们要求的变量。 为我工作过……< / p >

有很多方法可以做到这一点。这些因素如下:

假设你的原始数字如下所示: Double number = 2354548.235;

使用NumberFormat和舍入模式

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
decimalFormatter.setRoundingMode(RoundingMode.CEILING);


String fString = decimalFormatter.format(number);
System.out.println(fString);

使用字符串格式化器

System.out.println(String.format("%1$,.2f", number));
在所有情况下,输出将是: 2354548.24 < / >强

请注意:

在舍入过程中,你可以在格式化器中添加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;

使用DecimalFormat

 NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(myDouble);
System.out.println(fString);