【问题标题】:Show very big double values on EditText在 EditText 上显示非常大的双精度值
【发布时间】:2011-12-29 11:12:00
【问题描述】:

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

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

问题是:

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

【问题讨论】:

  • 为什么不直接显示为 editto.setText(a+""); 呢?因为在你的情况下 EditText 没有做任何事情,但 DecimalFormat 正在改变你的号码。
  • 感谢您对科学怪人的评论

标签: android android-edittext decimalformat


【解决方案1】:

Double1.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));

【讨论】:

  • 我添加了解决方案。看看吧。
【解决方案2】:

试试这个

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));

【讨论】:

  • 感谢您的回答。但我想我没有很好地解释这个问题。看,在我的应用程序中,当我在 EditText 或 String 或其他东西上设置任何双倍大值时,如果它有超过 15 个字符,我的应用程序用 "0" 替换剩余字符,我想纠正这个错误。例如,当我的变量具有 12345123451234512345 值并且我在 EditText 上设置它时,EditText 显示 1234512345123451234500000 我很困惑
  • double(8 bytes as in java) 覆盖范围从 4.94065645841246544e-324d 到 1.79769313486231570e+308d(正或负)。最好使用 String 类进行操作。
【解决方案3】:

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

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

【讨论】:

  • 但在这种情况下,如果我的值是一个 rouand 数字,它将在末尾显示为“.0”。例如,如果 a=123 它将显示为“123.0”,这太糟糕了:(
  • 你试过这个代码和它给出的磨损值吗?您可以使用 BigDecimal 类代替 Decimal
【解决方案4】:

我建议在行中:

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

改成:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-15
    • 2012-05-24
    相关资源
    最近更新 更多