2011-12-29 48 views
3

首先,请原谅我糟糕的英语口语。在EditText上显示非常大的双值

我是Android开发新手。我有一个问题,并认为你可以解决它。

的问题是:

我有一个像12345678987654321一个非常大的双重价值在我的Android应用 但是当我想表明它EditText,它会显示这样12345678987654300。 在这种情况下,当我的值中的字符是在比15个字符剩余字符“0”

我不知道我必须做的机器人表演。

我使用此代码:

DecimalFormat df = new DecimalFormat("#.#########"); 
double a = Distancevals[1] * Distancevals[2]; 
//Distancevals is an array of double with big values 
EditText editto = (EditText)findViewById(...); 
editto.setText(df.format(a)); 
+0

你为什么不只是显示它作为' editto.setText(a +“”);'?原因在你的情况下EditText没有做任何事情,但DecimalFormat正在改变你的号码。 – MKJParekh 2011-12-29 12:26:28

+0

谢谢你的评论Frankenstein – afb 2011-12-29 13:52:08

回答

1

Double以格式1.23456789876543E16存储您的号码12345678987654321,因此您将丢失号码21的结尾。当您对结果进行格式化时,已知您的号码由17个符号组成,因此format函数会在号码末尾添加两个零而不是21

尝试使用此:

DecimalFormat df = new DecimalFormat("#.#########"); 
BigDecimal a = new BigDecimal(Distancevals[1] * Distancevals[2]); 
// Distancevals is an array of double with big values 
EditText editto = (EditText) findViewById(...); 
editto.setText(df.format(a)); 
+0

谢谢你Galogen for ur解释。我现在要做? – afb 2011-12-29 13:41:00

+0

我增加了解决方案,看看。 – Galogen 2011-12-30 07:18:38

0

试试这个

DecimalFormat df= new DecimalFormat("###############00"); 
double a=Distancevals[1]*Distancevals[2]; 
//Distancevals is an array of double with big values 
EditText editto=(EditText)findViewById(...); 
editto.setText(df.format(a)); 
+0

谢谢你的回答。但我想我没有很好地解释这个问题。在我的应用程序中,当我在EditText或String上设置任何双重大值时,如果它有超过15个字符,我的应用程序会将“0”替换为残余字符,并且我想更正此错误。例如,当我的变量具有12345123451234512345值并将其设置为EditText时,EditText显示1234512345123451234500000 我混淆 – afb 2011-12-29 11:56:05

+0

double(8字节,如java中)涵盖从4.94065645841246544e-324d到1.79769313486231570e + 308d(正数或负数)的范围。最好使用String类来进行操作。 – 2011-12-29 13:07:24

0

你只是显示它作为你的情况EditText上没有做任何事情,但是DecimalFormat的editto.setText(a+"");

原因正在发生变化你的号码。

+0

,但在这种情况下,如果我的值是一个rouand号码,它将在末尾显示为“.0”。例如,如果a = 123,它会显示为“123.0”,它太糟糕了:( – afb 2011-12-29 13:30:03

+0

你试过这个代码,它给的worng值?你可以使用'BigDecimal'类代替十进制 – MKJParekh 2011-12-29 13:31:51

0

我建议在该行:

editto.setText(df.format(a)); 

将其更改为:

editto.setText(df.format(a.toString()));