![](/img/trans.png)
[英]how to use DecimalFormat() to only output significant fractional digits
[英]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--
因此,我建議您絕對要檢查解析結果(而不是字符串本身)的位數是否為:
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.