我有一个数字格式异常错误
I have a number format exeception error
我收到此错误 "java.lang.NumberFormatException: Invalid int: "3e+06"" 并阻止我申请 运行。我将一个数字字符串值传递给一个 int 并且发生了这种情况。会不会是数字对于整数来说太大了?谁能告诉我这意味着什么以及它的任何解决方案?
Bundle getAlarmInfo = getIntent().getExtras();
titleOfAlarm = getAlarmInfo.getString("Title");
totalTime = getAlarmInfo.getString("totalTime");
// 好的,所以我正在尝试获取 getAlarmInfo.getString("totalTime") 的值;并将其传递给总时间,这是一个字符串
actualTimeFiniliazedInMilliSeconds = Integer.parseInt(totalTime);
//然后我获取该值并将其存储在 actualTimeFiniliazedInMilliSeconds 中
这是一个整数。
titleTextView.setText(titleOfAlarm);
// 然后我将该值传递给只接受整数和长整数的 CountDownTime。
countDown = new CountDownTime( actualTimeFiniliazedInMilliSeconds, timeInterval);
countDown.start();
首先你应该post一些代码,但是:
您要解析什么值?
检查值是否太大的最快方法是将其解析为 Long
类型。如果合适,你就有答案了
// 编辑
如果您需要 int
或 long
并且您要转换为 3e+06
的字符串,请尝试将其转换为 BigInt,然后再转换为 Integer。整数可以处理 3000000 的值,这不是问题。但是从字符串转换有问题所以用我的方式应该没问题
您可以使用 BigDecimal
和 BigInteger
,如下所示:
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigIntExample {
public static void main(String[] args) {
String asString = "3e+06";
BigInteger number = new BigDecimal(asString).toBigInteger();
System.out.println("The number is : "+number);
}
}
输出:
The number is : 3000000
您可以使用 BigDecimal intValue()
作为整数的 科学计数法 ,例如 :-
int val = new BigDecimal("3e+06").intValue(); // outputs :- 3000000
如果 val
大于 Integer.MAX_VALUE
,您可以使用 BigInteger
像:-
BigInteger val = new BigDecimal("3e+06").toBigInteger(); // outputs :- 3000000
我收到此错误 "java.lang.NumberFormatException: Invalid int: "3e+06"" 并阻止我申请 运行。我将一个数字字符串值传递给一个 int 并且发生了这种情况。会不会是数字对于整数来说太大了?谁能告诉我这意味着什么以及它的任何解决方案?
Bundle getAlarmInfo = getIntent().getExtras();
titleOfAlarm = getAlarmInfo.getString("Title");
totalTime = getAlarmInfo.getString("totalTime");
// 好的,所以我正在尝试获取 getAlarmInfo.getString("totalTime") 的值;并将其传递给总时间,这是一个字符串
actualTimeFiniliazedInMilliSeconds = Integer.parseInt(totalTime);
//然后我获取该值并将其存储在 actualTimeFiniliazedInMilliSeconds 中 这是一个整数。
titleTextView.setText(titleOfAlarm);
// 然后我将该值传递给只接受整数和长整数的 CountDownTime。
countDown = new CountDownTime( actualTimeFiniliazedInMilliSeconds, timeInterval);
countDown.start();
首先你应该post一些代码,但是:
您要解析什么值?
检查值是否太大的最快方法是将其解析为
Long
类型。如果合适,你就有答案了
// 编辑
如果您需要 int
或 long
并且您要转换为 3e+06
的字符串,请尝试将其转换为 BigInt,然后再转换为 Integer。整数可以处理 3000000 的值,这不是问题。但是从字符串转换有问题所以用我的方式应该没问题
您可以使用 BigDecimal
和 BigInteger
,如下所示:
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigIntExample {
public static void main(String[] args) {
String asString = "3e+06";
BigInteger number = new BigDecimal(asString).toBigInteger();
System.out.println("The number is : "+number);
}
}
输出:
The number is : 3000000
您可以使用 BigDecimal intValue()
作为整数的 科学计数法 ,例如 :-
int val = new BigDecimal("3e+06").intValue(); // outputs :- 3000000
如果 val
大于 Integer.MAX_VALUE
,您可以使用 BigInteger
像:-
BigInteger val = new BigDecimal("3e+06").toBigInteger(); // outputs :- 3000000