簡體   English   中英

String.format() 在 Java 中格式化雙精度

[英]String.format() to format double in Java

如何使用String.format(format, args)來格式化如下所示的雙精度數?

2354548.235 -> 2,354,548.23

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

String.format自動使用默認語言環境。

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

這意味着我們在 ans 中總共需要 4 位數字,其中 3 位應在小數點后。 f 是 double 的格式說明符。 x 表示我們要為其查找的變量。 為我工作。 . .

如果要使用手動設置的符號對其進行格式化,請使用以下命令:

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

不過,首選基於區域設置的格式。

從此鏈接中提取的代碼;

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
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

有很多方法可以做到這一點。 這些是在下面給出的:

假設您的原始號碼如下所示: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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM