JAVA:使用 DecimalFormat 时遇到问题?需要 30.40 而不是 30.4 [重复]
Posted
技术标签:
【中文标题】JAVA:使用 DecimalFormat 时遇到问题?需要 30.40 而不是 30.4 [重复]【英文标题】:JAVA: Having trouble using DecimalFormat? Need 30.40 not 30.4 [duplicate] 【发布时间】: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));
【问题讨论】:
【参考方案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");
【讨论】:
以上是关于JAVA:使用 DecimalFormat 时遇到问题?需要 30.40 而不是 30.4 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Java 中,我可以使用 DecimalFormat 在数字之间输入破折号 (-) 吗?
Java DecimalFormat 在执行指数符号时会产生错误