【问题标题】:Java Decimals formattingJava 小数格式化
【发布时间】:2012-02-24 13:38:14
【问题描述】:

如何在各种场景下用Java进行数字格式化:

  1. 如果值为0,则输出为零。
  2. 如果值为 1,则输出为 1。
  3. 如果值为 1.2,则输出为 1.20。
  4. 如果值为 1.20,则输出为 1.20。

所以这意味着如果输入值有小数,那么我必须将 numberformat 应用到两个小数位,否则不需要。

【问题讨论】:

标签: java


【解决方案1】:

一个DecimalFormatter 不适用于没有小数的情况和两位小数的情况。

以下是满足您所有 4 个条件的一些代码:

    DecimalFormat formatter1 = new DecimalFormat("0");
    DecimalFormat formatter2 = new DecimalFormat("0.00");

    double[] input = {0, 1, 1.2, 1.265};
    for (int i = 0; i < input.length; i++) {
        double test = Math.round(input[i]);
        if (Math.abs(test - input[i]) < 1E-6) {
            System.out.println(formatter1.format(input[i]));
        } else {
            System.out.println(formatter2.format(input[i]));
        }
    }

编辑添加:对于 jambjo,一个在 DecimalFormatter 之后操作字符串的版本。

    DecimalFormat formatter2 = new DecimalFormat("0.00");

    double[] input = {0, 1, 1.2, 1.265};
    for (int i = 0; i < input.length; i++) {
        String result = formatter2.format(input[i]);
        int pos = result.indexOf(".00");
        if (pos >= 0) {
            result = result.substring(0, pos);
        }
        System.out.println(result);
    }

【讨论】:

  • 像 1.002 这样的输入呢?
  • @jarnbjo:输入 1.002 将显示为 1.00。是否可以接受取决于 user914357。我假设 user914357 正在处理最多 2 位小数的钱。
  • @: 但我需要输出值作为双精度而不是字符串。如果我执行 Double.parseDouble(formatter1.format(input[i])),我将失去小数位。
  • @user914357:为什么需要双精度输出值?您已经有了输入值。您的问题是关于双精度数的显示,这通常是用字符串完成的。
  • @我的输入值不是双精度字符串。转换后我需要上述格式的双精度值。
【解决方案2】:

http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html。这种格式的一个例子是:

double input = 1.2;
DecimalFormat formatter = new DecimalFormat("0.00");
String result = formatter.format(input);

十进制符号(以及结果字符串中使用的其他符号)将取决于系统区域设置(除非另有设置) - 请参阅http://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html#setDecimalFormatSymbols%28java.text.DecimalFormatSymbols

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    相关资源
    最近更新 更多