java - 是否可以在 DecimalFormat 解析中指定精确的小数位数?

标签 java decimalformat

我正在使用 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/

相关文章:

Java:将多个属性文件作为一个加载

java - Spring security REST 不处理登录请求(404)

java - 十进制格式舍入模式产生不一致的值

java - 如何使用 DecimalFormat 仅隐藏数字 "with decimals"中的尾随零

java - 格式,java中double小数点后2位,integer小数点后0位

java - DecimalFormat 取决于系统设置?

java - 附加到另一个 JVM 并监听事件?可能的?

java - 有什么方法可以使用 Apache POI 读取 .xls 和 .xlsx 文件吗?

java - 如何从 JTable 中删除重复行?

java - 在Java中,在DecimalFormat替换方法中将点转换为逗号