【问题标题】:String from EditText to float从 EditText 到浮动的字符串
【发布时间】:2010-11-19 21:50:10
【问题描述】:

我有一个将用于浮点数的 EditText。所以我试图从 EditText 中读取文本并将其放入一个浮点变量中。但我似乎有一个文本浮动问题。这是我的行:

float Number = ( ( EditText )findViewById( R.id.edit_float ) ).getText();

我尝试过使用 Float.parseFloat(string) 和一般的强制转换,但似乎没有任何效果。我可以在这里做什么?另外,有没有办法在将浮点数写入变量之前检查其是否有效?

【问题讨论】:

  • 确保您养成查看返回类型的习惯。显然,尝试将字符串设置为浮点数是行不通的。您必须按照以下 Octavian Damiean 的回答进行转换。
  • 关于那个话题,他实际上是在尝试使用这一行从 Editable 转换为 float,因为 getText() 返回一个 Editable。

标签: java android


【解决方案1】:

试试这个。

EditText edt = (EditText) findViewById(R.id.edit_float);
float number = Float.valueOf(edt.getText().toString());

如果Float 包装类将字符串转换为浮点数,则使用valueOf() 方法。在此示例中,我使用 getText() 获取 EditTextEditable 对象,在该对象上调用 toString() 方法以从中获取字符串。

更新:完全正确的家伙对不起。是时候增加我的绵羊计数器了。

【讨论】:

  • getText() 返回Editable。您需要使用edt.getText().toString();。编辑:被打了1分钟。 :P
  • 谢谢!现在我的整行是: Float.valueOf( ( ( EditText )findViewById( R.id.edittext_wireframe_width ) ).getText().toString() );
  • 在那张纸条上,我想知道为什么谷歌选择这样做?我认为单独的 Editable getEditable()String getText() 方法会更清晰,不是吗?
  • 感谢@Falmarri 和@kcoppock。
  • @kcoppock:EditText 实例引用的对象是Editable;返回 String 意味着每次调用 getText 时都会创建一个实例。这样的 API 确保 String 实例的创建是明确的。 (有关为什么创建太多对象不好的更多详细信息,请参阅developer.android.com/guide/practices/design/…
【解决方案2】:
float getFloatFrom(EditText txt) {
    try {
        return NumberFormat.getInstance().parse(txt.getText().toString()).floatValue();
    } catch (ParseException e) {
        return 0.0f;
    }
}

如果您希望代码在使用小数点逗号而不是小数点的国家/地区工作,请不要使用 Float.valueOf()。

【讨论】:

猜你喜欢
  • 2021-10-09
  • 2021-05-08
  • 2018-08-11
  • 2016-11-24
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多