簡體   English   中英

可以在DecimalFormat解析中指定小數位數的確切數目嗎?

[英]Is it possible to specify exact number of fractional digits in DecimalFormat parsing?

我正在使用DecimalFormat解析代表十進制數字的字符串。 我想要的是一個解析函數,該函數檢查字符串中小數位數的確切數量。 詳細地說,我想檢查字符串是否恰好有兩個小數位數(例如, "1.10"有效, "1.1"無效)。

DecimalFormat是否可能具有這種行為? 使用以下方法構建的實例不起作用。

private static DecimalFormat decimalFormat() {
    final DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
    decimalFormatSymbols.setDecimalSeparator('.');
    final DecimalFormat decimalFormat = new DecimalFormat("#0.00", decimalFormatSymbols);
    decimalFormat.setMinimumFractionDigits(2);
    decimalFormat.setParseBigDecimal(true);
    return decimalFormat;
}

有什么建議么?

這是有關setMinimumIntegerDigits的文檔: https : //docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html#setMinimumIntegerDigits-int-

newValue-要顯示的最小整數位數; [...]。

據我了解,這並不是必需的,只是作為輸出的格式。

查看DecimalFormat的可用函數,我看不到任何能為您提供小數位數的東西。

但是,由於您使用的是setParseBigDecimal(true) ,因此解析字符串將為您提供一個BigDecimal ,使您可以訪問precision函數: https : //docs.oracle.com/javase/8/docs/api/java/math /BigDecimal.html#precision--

因此,我建議您絕對要檢查解析結果(而不是字符串本身)的位數是否為:

  • 將最小分數數字設置為0
  • 帶弦
  • BigDecimal解析它
  • 使用BigDecima::precision函數檢查位數是否正確。

希望這可以幫助。

聽起來您正在嘗試驗證條件,而不是將字符串轉換為給定格式。 您可以使用正則表達式來執行此操作。 這是我認為可以滿足您需求的示例方法

public boolean hasTwoFractionalDigits(String text) {
    return Pattern.compile("^\\d+\\.\\d\\d$").matcher(text).find();
}

對於“ 10.33”將返回true,但對於“ 10.3”將返回false。 如果這不能回答您的問題,請告訴我。

如果價格具有小數點(。),則小數點(。)始終以數字作為前綴和后綴。 即' 0.0 '整數價格是可以接受的。 最多2個小數位數。

5,5.0,5.00接受0,0.0,0.00 5. .5,5.000,。,.0,.00,.000,0.字符串=錯誤

暫無
暫無

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

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