我正在使用 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 - the minimum number of integer digits to be shown; [...].
据我所知,这并不是一个要求,只是作为输出的格式。
查看 DecimalFormat
的可用函数,我看不到任何可以提供小数位数的函数。
但是,由于您使用的是 setParseBigDecimal(true)
,解析字符串会为您提供一个 BigDecimal
,它使您可以访问精度
功能:https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html#precision--
因此,如果您绝对想检查解析结果(而不是字符串本身)的正确位数,我的建议是:
- 将最小小数位设置为 0
- 获取字符串
- 用
BigDecimal
解析它 - 使用
BigDecima::precision
函数检查位数是否正确。
希望这有帮助。
关于java - 是否可以在 DecimalFormat 解析中指定精确的小数位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50496770/