Java 从EditText到float的字符串

Java 从EditText到float的字符串,java,android,Java,Android,我有一个EditText,它将用于浮点数。所以我试图从EditText中读取文本,并将其放入一个浮点变量中。但我似乎有一个文本浮动的问题。这是我的路线: float Number = ( ( EditText )findViewById( R.id.edit_float ) ).getText(); 我尝试过使用Float.parseFloat(string)和普通的强制转换,但似乎没有任何效果。我能在这里做什么?另外,在将浮点数写入变量之前,是否有方法检查浮点数是否有效?试试这个 EditT

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

float Number = ( ( EditText )findViewById( R.id.edit_float ) ).getText();
我尝试过使用Float.parseFloat(string)和普通的强制转换,但似乎没有任何效果。我能在这里做什么?另外,在将浮点数写入变量之前,是否有方法检查浮点数是否有效?

试试这个

EditText edt = (EditText) findViewById(R.id.edit_float);
float number = Float.valueOf(edt.getText().toString());
如果
Float
包装类将字符串转换为Float,则使用
valueOf()
方法。在本例中,我使用
getText()
获取该
EditText
Editable
对象,在该对象上调用
toString()
方法从中获取字符串

更新:完全正确,抱歉。是时候增加我的羊计数器了

float getFloatFrom(EditText txt) {
    try {
        return NumberFormat.getInstance().parse(txt.getText().toString()).floatValue();
    } catch (ParseException e) {
        return 0.0f;
    }
}

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

确保养成查看返回类型的习惯。显然,试图将字符串设置为浮点数是行不通的。你必须转换它,如下面Octavian Damiean的回答所示。在这个主题上,他实际上也在尝试用这行从可编辑转换为浮点,因为
getText()
返回一个可编辑。
getText()
返回一个
Editable
。您需要使用
edt.getText().toString()。编辑:被1分钟击败:PThanx!现在我的完整行是:Float.valueOf((EditText)findViewById(R.id.EditText\u wireframe\u width)).getText().toString());在这一点上,我想知道谷歌为什么选择这样做?我认为单独的
Editable getEditable()
String getText()
方法会更清晰,不是吗?谢谢@falmari和@kcopock@kcopock:EditText
实例引用的对象是
Editable
;返回
字符串
意味着每次调用
getText
时都要创建一个实例。这样的API确保
字符串
实例的创建是显式的。(有关为什么创建太多对象不好的更多详细信息,请参阅)我认为数字转换最好按照以下方式处理:您能更具体一点吗?