Java:使用 DecimalFormat 格式化 double 和整数,但保留没有小数点分隔符的整数

标签 java integer double decimalformat

我正在尝试在 Java 程序中格式化一些数字。这些数字将是 double 和整数。在处理 double 时,我只想保留两位小数,但在处理整数时,我希望程序不影响它们。换句话说:

double - 输入

14.0184849945

double - 输出

14.01

整数 - 输入

13

整数 - 输出

13 (not 13.00)

有没有办法在相同 DecimalFormat 实例中实现它?到目前为止,我的代码如下:

DecimalFormat df = new DecimalFormat("#,###,##0.00");
DecimalFormatSymbols otherSymbols = new   DecimalFormatSymbols(Locale.ENGLISH);
otherSymbols.setDecimalSeparator('.');
otherSymbols.setGroupingSeparator(',');
df.setDecimalFormatSymbols(otherSymbols);

最佳答案

您可以将 minimumFractionDigits 设置为 0。像这样:

public class Test {

    public static void main(String[] args) {
        System.out.println(format(14.0184849945)); // prints '14.01'
        System.out.println(format(13)); // prints '13'
        System.out.println(format(3.5)); // prints '3.5'
        System.out.println(format(3.138136)); // prints '3.13'
    }

    public static String format(Number n) {
        NumberFormat format = DecimalFormat.getInstance();
        format.setRoundingMode(RoundingMode.FLOOR);
        format.setMinimumFractionDigits(0);
        format.setMaximumFractionDigits(2);
        return format.format(n);
    }

}

关于Java:使用 DecimalFormat 格式化 double 和整数,但保留没有小数点分隔符的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16309189/

相关文章:

c++ - 将 float 分配给 long double 时, float 的值会发生什么变化?

java - 在 JSTL 中迭代列表

c++ - C++ 可以在内部表示而无需舍入的 0 和 1 之间的最大和最小数字是多少?

java - 有没有一种优雅的方法可以将 ISO 639-2(3 个字母)语言代码转换为 Java 语言环境?

java - 验证金额应为整数类型的方法返回类型

ruby - 无法总结 ruby 整数

string - 将整数转换为字符串以在运行时创建输出文件名

MySQL分页无需双重查询?

java - LinkedList 数组的 setter 和 getter

java - 从 Java 运行 PSExec 不起作用