当前位置: 代码迷 >> java >> 我有一个数字格式感知错误
  详细解决方案

我有一个数字格式感知错误

热度:18   发布时间:2023-08-02 10:37:25.0

我收到此错误“ java.lang.NumberFormatException:无效的int:“ 3e + 06”“,它阻止了我的应用程序运行。 我将数字字符串值传递给int,并且发生了这种情况。 数字是否会大一个整数? 谁能告诉我这意味着什么以及任何解决方案?

        Bundle getAlarmInfo = getIntent().getExtras();
        titleOfAlarm = getAlarmInfo.getString("Title");
        totalTime = getAlarmInfo.getString("totalTime");

//好的,所以我试图获取getAlarmInfo.getString(“ totalTime”);的值。 并将其传递给一个字符串的总时间

        actualTimeFiniliazedInMilliSeconds = Integer.parseInt(totalTime);

//然后,我将这个值存储在int的ActualTimeFiniliazedInMilliSeconds中。

  titleTextView.setText(titleOfAlarm);

//然后,我将该值传递给CountDownTime,该值仅接受int和long。

        countDown = new CountDownTime( actualTimeFiniliazedInMilliSeconds, timeInterval);
        countDown.start();

首先,您应该发布一些代码,但是:

  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);
    }
}

输出:

号码是: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
  相关解决方案