我正在制作一个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