java - 将 double 四舍五入到小数点后两位,显示 "#.00"而不是 "#.0"

标签 java floating-point double decimal rounding

我的 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这不是我想要的。有什么想法可以实现我的需要吗?谢谢。

最佳答案

我认为您正在寻找 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"

关于java - 将 double 四舍五入到小数点后两位,显示 "#.00"而不是 "#.0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57898084/

相关文章:

java - 如何将 SynthLookAndFeel 与 xml 文件一起使用,其中 xml 文件路径将使用 getResourceAsStream 方法加载文件?

java - 在 Session.save() 之间交换行。输出发生什么变化。请参阅代码中的注释。我是java hibernate新手

java - 我想启用矩阵变量,但它显示了消息

R:如何让 gamma() 返回实际数字而不是 Inf

c++ - 为什么mpfr_printf与printf的十六进制 float (%a转换说明符)不同?

string - 从 double 转换为字符串

f# - float32 与 single 和 float 与 double 之间有什么区别(如果有)?

c++ - atof 函数在程序中不起作用

java - 未在路径 : DexPathList for Samsung devices only. 上找到类 "LinearLayout"(应用商店构建)

c# - float 计算精度