我正在制作一个Android应用程序。用户将在android EditText
中输入11-15位数,因为我必须对此进行一些数学工作,我需要将其转换为double,但到目前为止这还不能正常工作
如何在将其解析为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
答案 0 :(得分:1)
要格式化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
答案 1 :(得分:0)
试试这个 double Dvalue = Double.parseDouble(name.getText()。toString()); System.out.print(" Dvalue:" + Dvalue);
S值= Double.toString(Dvalue); System.out.print(" Svalue:" + Svalue)
答案 2 :(得分:0)
这个问题已经多次回答了。 This回答提供了几种有用的方法。
答案 3 :(得分:0)
Double.parseDouble
public static double parseDouble(String str) throws NumberFormatException
它返回字符串参数表示的double值,并抛出以下异常:
NullPointerException
- 如果指定的String
str
为空。
NumberFormatException
- 如果字符串格式无效。对于例如如果字符串为122.20ab
,则会抛出此异常。
String str="122.202";
Double var= Double.parseDouble(str);
转换后双变量var值为122.202
。
Double.valueOf
String str3="122.202";
Double var3= Double.valueOf(str3);
var3
的值为122.202
。
Double
类构造函数String str2="122.202";
Double var2= new Double(str2);
Double
类有一个构造函数,它解析传递的String
参数并返回一个double值。
public Double(String s) throws NumberFormatException
构造一个新分配的Double
对象,该对象表示由字符串表示的double类型的浮点值。
完整示例:
try{
//Using parseDouble
String str="122.202";
Double var= Double.parseDouble(str);
System.out.println(var);
String str2="122.202";
Double var2= new Double(str2);
System.out.println(var2);
//Using valueOf method
String str3="122.202";
Double var3= Double.valueOf(str3);
System.out.println(var3);
}catch (NullPointerException e){ e.printStackTrace();}
catch (NumberFormatException e){ e.printStackTrace();}
}
输出:
122.202
122.202
122.202
另外,这里是如何从EditText
获取文字:
EditText et = (EditText) findViewById(R.id.myEditText);
String text = et.getText().toString();