JAVA:使用 DecimalFormat 时遇到问题?需要 30.40 而不是 30.4

标签 java double

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

无论如何,我需要工资以两位小数结尾。它适用于像“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));
}

最佳答案

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

 private static String salary(double sal) {

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

    return (df.format(sal));
 }

您费尽心思对其进行格式化,然后再次将其设为Double,您就白费了功夫。

关于JAVA:使用 DecimalFormat 时遇到问题?需要 30.40 而不是 30.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42965306/

相关文章:

Java - 将泛型类型映射到所述类型的使用者

java - 如何在高分辨率屏幕上正确缩放图像

Java Swing : Improving cursor response using Threads

c++ - 从 C++ 中的 double 中检索分数部分

c - 编写一个程序,读取一个整数。输出另一个整数,其中偶数位保留,奇数位减 1,

c++ sizeof operator - 指向double的指针

java - 通过 QuickFixJ 实现 FIX 客户端抛出 NoSuchMethodError

java - JSF 页面中组件(面板)的可变顺序

java - 我制作了一个 CLI 计算器,我想知道,如何让程序无限期地接受数字,直到用户输入停止命令?

java - 将四舍五入到更少的数字加速计算