【问题标题】:Round a double to 2 decimal places displaying "#.00" instead of "#.0" [duplicate]将双精度数舍入到小数点后 2 位,显示“#.00”而不是“#.0”[重复]
【发布时间】:2019-09-11 23:55:13
【问题描述】:

我的 Android 应用程序(Java 代码)正在显示例如 15.0,而我需要显示的格式是 15.00。我的变量是double。我怎样才能做到这一点?我尝试的是来自 Jonik 在Round a double to 2 decimal places 的回答中的以下代码:

public static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();
    BigDecimal bd = BigDecimal.valueOf(value);
    bd = bd.setScale(places, RoundingMode.HALF_UP);
    return bd.doubleValue();
}

然后我用这个:

double myValue = 15.0;
round(myValue, 2);
System.out.println(myValue);

我想看到15.00 打印出来。但是,我看到的是15.0,这不是我想要的。有什么想法可以实现我的需要吗?谢谢。

【问题讨论】:

    标签: java floating-point double decimal rounding


    【解决方案1】:

    我认为您正在寻找NumberFormat。这样的事情应该可以工作:

    double a = 10.19823493;
    double b = 1.2;
    
    NumberFormat formatter = NumberFormat.getInstance();
    formatter.setMaximumFractionDigits(2);
    formatter.setMinimumFractionDigits(2);
    
    System.out.println(formatter.format(a)); // "10.20"
    System.out.println(formatter.format(b)); // "1.20"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多