【问题标题】:How to format a double without converting it into string type如何格式化双精度而不将其转换为字符串类型
【发布时间】:2016-12-09 04:40:31
【问题描述】:

我想要像

这样的值
1,
1.0,
0 

格式化为

1.00,
1.00,
0.00

我正在使用以下代码,

Double stringToNumber=Double.parseDouble("3");
DecimalFormat toTheFormat = new DecimalFormat("0.00");
toTheFormat.format(stringToNumber)

.format 返回一个字符串,如果我使用Double.parseDouble() 方法解析。

我失去了精度,即3.00再次变为3.0。如何解决这个问题?

【问题讨论】:

  • 定义“格式化”。
  • 嗨,为什么要格式化 Double?它通常在格式化程序的帮助下在 UI 上完成。
  • 排列或放入格式。
  • 数字就是值;他们没有格式。它们可以转换为特定格式的字符串。但 1.001.0 相同。因此这个问题没有意义。
  • @nomadus 我正在使用 jxl jar 在 java 中创建和编写 excel。在这里,我想在不丢失精度的情况下插入一个浮点值。所以我使用的是 Double。

标签: java parsing decimalformat


【解决方案1】:

这行得通吗?我已经做出改变了

    public class Tester {
    public static void main (String[] args) {
        double d = 1;
        NumberFormat numFormat = NumberFormat.getInstance();
        numFormat.setMaximumFractionDigits(3);
        numFormat.setMinimumFractionDigits(2);
        System.out.println(numFormat.format(d));
    }
}

【讨论】:

  • 这将打印 1.346 - 很好,但如果尝试打印 1,它应该像 1.00 一样打印,但这段代码不会这样做。仍然感谢您的回复。
  • 现在打印 1.00,如果数字是 1。
  • numFormat.format(d) 返回一个字符串,我不能将数字作为字符串插入,我可以这样做,但在 Excel 表中会提示错误。
  • 是的,我同意。这必须在 JXL 端完成,您将 XLS 单元格的格式设置为数字。
  • 你能试试这个吗? WritableCellFormat cf2 = new WritableCellFormat(NumberFormats.FLOAT);编号 n = 新编号(2,1,3.1415926535,cf2); s.addCell(n);
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多