我有一个数字格式异常错误

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一些代码,但是:

  1. 您要解析什么值?

  2. 检查值是否太大的最快方法是将其解析为 Long 类型。如果合适,你就有答案了

// 编辑

如果您需要 intlong 并且您要转换为 3e+06 的字符串,请尝试将其转换为 BigInt,然后再转换为 Integer。整数可以处理 3000000 的值,这不是问题。但是从字符串转换有问题所以用我的方式应该没问题

您可以使用 BigDecimalBigInteger,如下所示:

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