【问题标题】:String.format decimal with fixed width, zero padded and no decimal separatorString.format 具有固定宽度、零填充且无小数分隔符的十进制格式
【发布时间】:2014-06-28 23:04:59
【问题描述】:

我有一个双精度数(例如:123.45),我需要生成一个像 0000012345 这样的字符串。

我正在尝试仅使用 String.format (Formatter)。我可以使用 DecimalFormat 然后 replaceAll,但我想知道是否可以使用格式化程序获得相同的结果。 原因是我将它与FormatterLineAggregator(spring batch)一起使用

[编辑] - 强调问题的原因。也标记为春季批次。包含指向 Spring Batch 文档的链接。

来自 Spring Batch 文档:“...底层实现是使用作为 Java 5 的一部分添加的相同 Formatter 构建的。Java Formatter 基于 C 编程语言的 printf 功能。有关如何配置formatter 可以在 Formatter 的 javadoc 中找到。”。

Spring Batch itemWriter link

【问题讨论】:

  • 你可以使用 DecimalFormat 没有 'replaceAll()'。为什么要固定在“String.format()”上?
  • @EJP 只是阅读 que 问题。明确说明这是因为春季批次需要它。来自它的手册:“底层实现是使用作为 Java 5 的一部分添加的相同格式化程序构建的。Java 格式化程序基于 C 编程语言的 printf 功能。有关如何配置格式化程序的大多数详细信息可以在 javadoc 中找到格式化程序”。

标签: java spring-batch formatter


【解决方案1】:

您能否将值存储到 Formattable 并使用 Formattable#formatTo 生成所需的输出?

据我所知,没有办法在标准 String.format("%f") 输出中抑制小数点分隔符。即使您添加了一个DecimalFormatSymbolsProvider 类,它仍然必须从DecimalFormatSymbols.html#getDecimalSeparator() 返回一个char 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多