[英]Show padding zeros using DecimalFormat
我正在使用 DecimalFormat 將雙精度格式設置為 2 個小數位,如下所示:
DecimalFormat dec = new DecimalFormat("#.##");
double rawPercent = ( (double)(count.getCount().intValue()) /
(double)(total.intValue()) ) * 100.00;
double percentage = Double.valueOf(dec.format(rawPercent));
它有效,但如果我有一個像 20 這樣的數字,它會給我這個:
20.0
我想要這個:
20.00
有什么建議么?
DecimalFormat 類用於將十進制數值轉換為字符串。 在您的示例中,您正在獲取來自 format() 方法的 String 並將其放回雙變量中。 如果您隨后輸出該雙變量,您將看不到格式化的字符串。 請參閱下面的代碼示例及其輸出:
int count = 10;
int total = 20;
DecimalFormat dec = new DecimalFormat("#.00");
double rawPercent = ( (double)(count) / (double)(total) ) * 100.00;
double percentage = Double.valueOf(dec.format(rawPercent));
System.out.println("DF Version: " + dec.format(rawPercent));
System.out.println("double version: " + percentage);
哪些輸出:
"DF Version: 50.00"
"double version: 50.0"
試試這個代碼:
BigDecimal decimal = new BigDecimal("100.25");
BigDecimal decimal2 = new BigDecimal("1000.70");
BigDecimal decimal3 = new BigDecimal("10000.00");
DecimalFormat format = new DecimalFormat("###,###,###,###,###.##");
format.setDecimalSeparatorAlwaysShown(true);
format.setMinimumFractionDigits(2);
System.out.println(format.format(decimal));
System.out.println(format.format(decimal2));
System.out.println(format.format(decimal3));
結果:
100.25
1,000.70
10,000.00
使用格式“#.00”。
您可以嘗試以下操作:
DecimalFormat df = new DecimalFormat("0.000000");
df.setMinimumFractionDigits(0);
df.setMinimumIntegerDigits(2);
這樣你就可以保證小數點前后的最小位數
試試這個代碼:
int count = 10;
int total = 20;
int another=0;
DecimalFormat df = new DecimalFormat("0.00");
System.out.println(df.format(count));
System.out.println(df.format(total ));
System.out.println(df.format(another));
輸出為:10.00 20.00 0.00
我發現我的小測試程序很有用,想與您分享。 享受。
package be.softwarelab.numbers;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
public class DecimalNumbers {
private static final double ZERO = 0;
private static final double TEN = 10.0;
private static final double PI = Math.PI; // 3.141592653589793;
private static final double MILLIONS = Math.E * Math.pow(10, 6); // 2718281.828459045;
private static final double NINERS = 9999999.99999;
public static void main(String[] args) {
String format01 = "#.#";
String format02 = "0.#";
String format03 = "#.0";
String format04 = "0.0";
String format05 = "##.#";
String format06 = "00.#";
String formatAll = "###,###.###";
String formatLong = "#.#########";
System.out.println("====== ZERO =================================================");
showResult(ZERO, format01, Locale.US);
showResult(ZERO, format02, Locale.US);
showResult(ZERO, format03, Locale.US);
showResult(ZERO, format04, Locale.US);
showResult(ZERO, format05, Locale.US);
showResult(ZERO, format06, Locale.US);
System.out.println("====== TEN =================================================");
showResult(TEN, format01, Locale.US);
showResult(TEN, format02, Locale.US);
showResult(TEN, format03, Locale.US);
showResult(TEN, format04, Locale.US);
showResult(TEN, format05, Locale.US);
showResult(TEN, format06, Locale.US);
System.out.println("====== PI =================================================");
showResult(PI, format01, Locale.US);
showResult(PI, format02, Locale.US);
showResult(PI, format03, Locale.US);
showResult(PI, format04, Locale.US);
showResult(PI, format05, Locale.US);
showResult(PI, format06, Locale.US);
System.out.println("====== MILLIONS =============================================");
showResult(MILLIONS, formatAll, Locale.US);
showResult(MILLIONS, formatAll, Locale.GERMANY);
showResult(MILLIONS, formatAll, Locale.FRANCE);
showResult(MILLIONS, formatAll, new Locale("nl", "BE"));
System.out.println("====== NINERS =============================================");
showResult(NINERS, format01, Locale.US);
showResult(NINERS, format02, Locale.US);
showResult(NINERS, format03, Locale.US);
showResult(NINERS, format04, Locale.US);
showResult(NINERS, format05, Locale.US);
showResult(NINERS, format06, Locale.US);
showResult(NINERS, formatLong, Locale.US);
System.out.println("=============================================================");
}
public static void showResult(double number, String format, Locale locale) {
// Using a Locale to see the differences between regions.
DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(locale);
DecimalFormat formatter = new DecimalFormat (format, otherSymbols);
// Create the String result
String output = formatter.format(number);
// Format the output for a nice presentation.
System.out.format(" %s %20s %11s = %20s\n", locale, number, format, output);
}
}
這導致:
====== ZERO =================================================
en_US 0.0 #.# = 0
en_US 0.0 0.# = 0
en_US 0.0 #.0 = .0
en_US 0.0 0.0 = 0.0
en_US 0.0 ##.# = 0
en_US 0.0 00.# = 00
====== TEN =================================================
en_US 10.0 #.# = 10
en_US 10.0 0.# = 10
en_US 10.0 #.0 = 10.0
en_US 10.0 0.0 = 10.0
en_US 10.0 ##.# = 10
en_US 10.0 00.# = 10
====== PI =================================================
en_US 3.141592653589793 #.# = 3.1
en_US 3.141592653589793 0.# = 3.1
en_US 3.141592653589793 #.0 = 3.1
en_US 3.141592653589793 0.0 = 3.1
en_US 3.141592653589793 ##.# = 3.1
en_US 3.141592653589793 00.# = 03.1
====== MILLIONS =============================================
en_US 2718281.828459045 ###,###.### = 2,718,281.828
de_DE 2718281.828459045 ###,###.### = 2.718.281,828
fr_FR 2718281.828459045 ###,###.### = 2 718 281,828
nl_BE 2718281.828459045 ###,###.### = 2.718.281,828
====== NINERS =============================================
en_US 9999999.99999 #.# = 10000000
en_US 9999999.99999 0.# = 10000000
en_US 9999999.99999 #.0 = 10000000.0
en_US 9999999.99999 0.0 = 10000000.0
en_US 9999999.99999 ##.# = 10000000
en_US 9999999.99999 00.# = 10000000
en_US 9999999.99999 #.######### = 9999999.99999
=============================================================
嘗試使用“0.00”的 DecimalFormat 代替。 根據JavaDocs ,這不會去除額外的 0。
只是改變
DecimalFormat dec = new DecimalFormat("#.##");
和
DecimalFormat dec = new DecimalFormat("#.00");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.