String.format()在java中格式化double

时间:2011-02-03 10:54:45

标签: java

如何使用String.format(格式字符串,X)格式化double,如下所示

2354548.235 - > 2,354,548.23

谢谢!

7 个答案:

答案 0 :(得分:277)

String.format("%1$,.2f", myDouble);

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

答案 1 :(得分:36)

String.format("%4.3f" , x) ;

这意味着我们在ans中需要总共4位数,其中3位应该在十进制之后。 f是double的格式说明符。 x表示我们想要找到它的变量。 为我工作。 。 。

答案 2 :(得分:24)

如果要使用手动设置的符号对其进行格式化,请使用:

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

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

答案 3 :(得分:18)

this link;

中提取的代码
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;

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

此示例的输出显示了相同数字的格式如何随区域设置而变化:

345 987,246  fr_FR
345.987,246  de_DE
345,987.246  en_US

答案 4 :(得分:13)

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
  -1.234.567,12

答案 5 :(得分:1)

有很多方法可以做到这一点。那些在下面:

假设您的原始号码如下所示:         双数= 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;

答案 6 :(得分:0)

使用DecimalFormat

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