【问题标题】:DecimalFormat and doublesDecimalFormat 和双精度数
【发布时间】:2009-04-29 04:30:20
【问题描述】:

DecimalFormat 解析Double.toString() 表示(可以是科学和金融格式)。

为什么 Sun 选择了这种方法,而不是直接将 double 转换为 String?

PS: 更具体一点。为什么 DecimalFormat 在内部使用 Double.toString() 来格式化 Double,而不是格式化 Double 本身的内部表示?

【问题讨论】:

  • “直接转换”是什么意思?
  • 你能澄清你在问什么吗?我不知道您的意思是“直接将双精度转换为字符串”。在 OpenJDK 中,Double.toString() 返回 String.valueOf(value),其中 value 是原始的 double。这反过来又给出了 Double.toString(d),它调用了 new FloatingDecimal(d).toJavaFormatString(),最终完成了实际工作。

标签: java formatting double


【解决方案1】:

DecimalFormat 允许您为格式指定格式模式,从而使您可以更好地控制格式。

【讨论】:

  • 同意你的观点,但在这里我问的是 DecimalFormat 内部格式化的方式。
【解决方案2】:

他可能会问像“Double.toString(withSomeParameters)”这样的工作,而不是使用 DecimalFormat。

我认为原因可能是 i18n。在某些地方您可以输入 1,800.39 .. 而在其他地方您可以输入 1.800,39

【讨论】:

    【解决方案3】:

    我不知道您所说的“直接转换”是什么意思,但toString() 始终只是一个调试信息!您不应该使用它在前端显示值。使用DecimalFormat 进行解析和格式化!

    【讨论】:

    • 我问的那个。为什么 DecimalFormat 在内部使用 Double.toString() 结果来格式化 Double,而不是格式化 Double 本身的内部表示。
    【解决方案4】:

    也许 Sun 遵循DRY 原则。

    【讨论】:

      【解决方案5】:

      对于金融 应用程序,请改用 BigDecimal,它可以让您控制舍入模式和精度。

      【讨论】:

      • 实际上,与任何应用程序格式双的问题有关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 2018-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多