【发布时间】:2012-12-07 09:09:52
【问题描述】:
Android 2.3.3
程序:计算器
我有一个 EditText 接受一个字符串(例如:100+1.20+45+...)
当我尝试使用 Long.parseLong(1.20) 将 1.20 解析为 long 时,
我收到以下错误。
12-07 14:28:32.902: E/AndroidRuntime(771): FATAL EXCEPTION: main
12-07 14:28:32.902: E/AndroidRuntime(771): java.lang.NumberFormatException: 1.20
12-07 14:28:32.902: E/AndroidRuntime(771): at java.lang.Long.parse(Long.java:353)
12-07 14:28:32.902: E/AndroidRuntime(771): at java.lang.Long.parseLong(Long.java:344)
12-07 14:28:32.902: E/AndroidRuntime(771): at java.lang.Long.parseLong(Long.java:311)
我也试过Long.valueOf(),但是当我在某处读到时,Long.valueOf() 返回一个Long 对象,而Long.parseLong() 返回long 值。所以,我希望我想做的事情是正确的。
我阅读了有关此问题的所有可能问题,但无法解决。谁能帮帮我。
代码以备不时之需...
long result=0;
String expression = editText1.getText().toString();
String[] strArrayExpression2 = expression.split("\\+");
for(int i=0; i<strArrayExpression2.length;i++)
{
result += Long.parseLong(strArrayExpression2[i]);
}
回答 ::: 根据需求使用 Float.parseFloat() 或 Double.parseDouble()。
【问题讨论】:
-
1.20不是长,见Math.round或类似的东西 -
你能把代码发给我们吗?
-
问题是我必须在输入中添加所有数字。例如,100+1.20+45 应该给我 146.20,而 round 只会给我 146,这不是正确的值。
-
然后使用处理浮点数的
Double或Float -
哎呀!!!我差点忘了有 Float 之类的东西。会试一试的。