在EditText上显示非常大的双精度值

时间:2011-12-29 11:12:01

标签: android android-edittext decimalformat

首先请原谅我讲英语不好。

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

问题是:

我的Android应用程序中有一个非常大的双重值,如12345678987654321 但是当我想在EditText上显示时,它会显示为12345678987654300。 在这种情况下,当我的值字符超过 15个字符时,android显示剩余的字符为“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));

4 个答案:

答案 0 :(得分:1)

Double12345678987654321格式存储您的号码1.23456789876543E16,因此您将丢失号码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));

答案 1 :(得分: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));

答案 2 :(得分:0)

您只需将其显示为editto.setText(a+"");

因为在你的情况下,EditText没有做任何事情,但DecimalFormat正在改变你的号码。

答案 3 :(得分:0)

我建议行:

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

将其更改为:

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