我正在制作一个android应用程序。用户将在android EditText中输入11-15位数字,因为我必须对此做一些数学工作,我需要将其转换为double值,但到目前为止效果不佳

将相同的字符串解析为双倍后如何获取

到目前为止,这是我的代码:

String Svalue="1101300045"
double Dvalue=Double.parseDouble(Svalue);
System.out.print("Dvalue: "+Dvalue);
Dvalue++;
Svalue=Double.toString(Dvalue);
System.out.print("Svalue: "+Svalue)


输出:

Dvalue: 1.11013001045.E15
Svalue: 1.11013001046.E15


期望的输出:

Dvalue: 1101300045
Svalue: 1101300046

最佳答案

要格式化Double,请使用NumberFormat实用工具类。

    String Svalue = "1101300045";
    double Dvalue = Double.parseDouble(Svalue);

    NumberFormat nf = NumberFormat.getInstance();
    nf.setGroupingUsed(false);
    System.out.println("Dvalue: " + nf.format(Dvalue));

    Dvalue++;
    Svalue = nf.format(Dvalue);
    System.out.println("Svalue: " + Svalue);


您还可以使用舍入支持来格式化十进制值,例如

    Svalue = "1101300045.98765";
    Dvalue = Double.parseDouble(Svalue);

    nf.setMaximumFractionDigits(2);
    System.out.println("Dvalue: " + nf.format(Dvalue));


输出:

Dvalue: 1101300045
Svalue: 1101300046
Dvalue: 1101300045.99

10-06 12:08