首页 > 解决方案 > 如何使用十进制格式仅在整数中隐藏尾随零

问题描述

我需要这样的格式数字:

23.0 -> 23
23.20 -> 23.20
23.00 -> 23
23.11 -> 23.11
23.2 -> 23.20
23.999 -> 24
23.001 -> 23
1345.999 -> 1346 // Edited the question to add this from the OP's comment

这是我的代码:java:

  public static String toPrice(double number) {
         DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
            formatSymbols.setGroupingSeparator(' ');
            DecimalFormat format = new DecimalFormat("#,###,###.##", formatSymbols);
            return format.format(number);
    
         }

科特林:

fun Double.toPrice(): String =   DecimalFormat("#,###,###.##", DecimalFormatSymbols().apply {
                groupingSeparator = ' '
            }).format(this)

但是对于输入 23.20 或 23.2,我得到的结果是 23.2。这对我来说是错误的。我需要 23.20。我应该使用哪种字符串模式来实现这个结果?请帮我。

标签: javakotlindoubledecimalformat

解决方案


public static String toPrice(double number) {
    if (number == (int) number) {
        return Integer.toString((int) number);
    } else {
        return String.format("%.2f", number);
    }
}

编辑
包括千位分隔符

public static String toPrice(double number) {
    if (number == (int) number) {
        return String.format("%,d",(int)number);
    } else {
        return String.format("%,.2f", number);
    }
}

推荐阅读