Java 新十进制格式后的浮点无效
用户希望从EditText“设置温度”升高温度。 Currtemp是全局字符串,表示当前温度Java 新十进制格式后的浮点无效,java,android,floating-point,decimal,Java,Android,Floating Point,Decimal,用户希望从EditText“设置温度”升高温度。 Currtemp是全局字符串,表示当前温度 float temp = Float.parseFloat(set_temp.getText().toString()); temp-=0.1; currTemp=new DecimalFormat("#0.0").format(temp); set_temp.setText(currTemp); 在此之后,我在logcat中有一个错误 FATAL EXCEPTION: main Process: r
float temp = Float.parseFloat(set_temp.getText().toString());
temp-=0.1;
currTemp=new DecimalFormat("#0.0").format(temp);
set_temp.setText(currTemp);
在此之后,我在logcat中有一个错误
FATAL EXCEPTION: main
Process: ru.unn.caminlab, PID: 7835
java.lang.NumberFormatException: Invalid float: "49,9"
//但是为什么呢?看起来您正在解析一个文本字段,该字段包含无效的十进制格式
float temp = Float.parseFloat(set_temp.getText().toString());
您的set\u temp
字段包含“49,9”
,该字段应为“49.9”
我想他们可以输入字段。您需要将其限制为仅限数字字段。不是纯文本。(要删除,
输入)
将以下内容添加到字段的xml中:
android:inputType="numberDecimal"
看起来您正在分析包含无效十进制格式的文本字段
float temp = Float.parseFloat(set_temp.getText().toString());
您的set\u temp
字段包含“49,9”
,该字段应为“49.9”
我想他们可以输入字段。您需要将其限制为仅限数字字段。不是纯文本。(要删除,
输入)
将以下内容添加到字段的xml中:
android:inputType="numberDecimal"
1) 检查用户是否具有美国英语语言环境,在许多情况下,用户可能包括特定于语言的浮点文本
2) 从Float.parseFloat()中删除set_temp.getText().toString(),并检查set_temp.getText().toString()是否返回正确的数字字符串文字,然后将其传递给parseInt()。1)检查用户是否具有美国英语语言环境,在许多情况下,用户可能包含特定于语言的浮点文字
2) 从Float.parseFloat()中删除set_temp.getText().toString(),并检查set_temp.getText().toString()。toString()返回正确的数字字符串文字,然后将其传递给parseInt()。
,
逗号而不是
句号可能具有讽刺意味的是,答案只比他的问题高一行:(@svarog我假设它来自用户输入,因为没有其他东西会产生逗号。读取日志是一项有用的技能。set_temp.getText().toString()
是罪魁祸首,他至少应该抓住例外并继续,
逗号而不是,
句号可能是可悲的讽刺是答案只比他的问题高出一行:(@svarog我认为它来自用户输入,因为其他任何东西都不会产生逗号。读取日志是一项有用的技能。set_temp.getText()。toString()
是罪魁祸首,他至少应该捕获异常并移动android:inputType=“numberDecimal”不能解决问题。十进制是(0.0)但在我的字段中有0,0之后…android:inputType=“numberDecimal”无法解决问题。DecimalFormat是(0.0),但在我的字段中有0,0之后。。。