如何在包含特殊字符的两个小数点后将其舍入字符串数?

时间:2015-11-09 14:02:24

标签: java

我有两个字符串change_inpoints和change_inpercentage。

我需要在两位小数后将其四舍五入。

String change_inpoints = "510.663757";
String change_inpercentage =  "+0.095152%";

这是我试过的

import java.text.DecimalFormat;
public class RounditOff {
    public static void main(String[] args) {
        String change_inpoints = "510.663757";
        String change_inpercentage =  "+0.095152%";
        double d_inpoints = Double.parseDouble(change_inpoints);
        DecimalFormat decimal = new DecimalFormat("#.00");
        System.out.println("change in points " +decimal.format(d_inpoints));
        change_inpercentage = change_inpercentage.replace("+", "");
        change_inpercentage = change_inpercentage.replace("-", "");
        change_inpercentage = change_inpercentage.replace("%", "");
        double d2_percentchange = Double.parseDouble(change_inpercentage);
        DecimalFormat decimal_2 = new DecimalFormat("#.00");
        System.out.println("change in percent " +decimal_2.format(d2_percentchange));
    }
}

但是chnage_inpercent的问题在于我

  1. 小数点前的数字丢失
  2. 我怎样才能在最后添加百分比符号?
  3. 例如,change_in百分比的当前输出为 .10

    应为0.10%

    请您告诉我如何以更好的方式做到这一点

3 个答案:

答案 0 :(得分:3)

使用

new DecimalFormat("0.00");

而不是

new DecimalFormat("#.00");

as#means" Digit,zero表示缺席" 对于百分号,您可以使用%前缀/后缀(0.00%)。

Here您可以找到有关DecimalFormat的更多信息。

答案 1 :(得分:0)

只需将格式更改为

即可
DecimalFormat decimal_2 = new DecimalFormat("0.00%");

这将在点之前加零,然后追加%字符

答案 2 :(得分:0)

您可以使用:

DecimalFormat decimalFormat = new DecimalFormat("#.##%");
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);

默认的舍入模式是“HALF_EVEN”。

decimalFormat.format(change_inpercentage);