【问题标题】:JAVA: Having trouble using DecimalFormat? Need 30.40 not 30.4 [duplicate]JAVA:使用 DecimalFormat 时遇到问题?需要 30.40 而不是 30.4 [重复]
【发布时间】:2017-03-23 00:51:56
【问题描述】:

我目前有 switch 语句,可以根据工人的头衔随机生成薪水。一切正常,但我似乎无法正确截断薪水。

无论如何,我都需要薪水以两位小数结尾。它适用于像“57662.24”这样的薪水,但我也得到像“87756.4”这样的薪水,我需要是“87756.40”

我不确定我做错了什么,所以我希望能得到一些帮助!

// Method to return salary based on rank
private static Double salary(String rank) {

    // initialize variables for use in switch statement
    double sal = 0;
    Random random = new Random();
    DecimalFormat df = new DecimalFormat("###.00");

    switch (rank) {
    case "Assistant":
        sal = random.nextDouble() * (80000 - 50000) + 50000;
        break;

    case "Associate":
        sal = random.nextDouble() * (110000 - 60000) + 60000;
        break;

    case "Full":
        sal = random.nextDouble() * (130000 - 75000) + 75000;
        break;
    }
    return sal = Double.valueOf(df.format(sal));
}

【问题讨论】:

    标签: java double


    【解决方案1】:

    更改方法,使其返回由DecimalFormat 对象格式化的String

     private static String salary(double sal) {
    
        DecimalFormat df = new DecimalFormat("###.00");
    
        return (df.format(sal));
     }
    

    您努力对其进行格式化,然后再次将其设置为Double,从而失去了这种努力。

    【讨论】:

    • @4castle - 感谢您的编辑。这是相当尴尬的混乱。
    【解决方案2】:

    你想要的是

    DecimalFormat df = new DecimalFormat("#.00"); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      相关资源
      最近更新 更多