我有一个 String 变量,其中可能包含一个类似" 2015.0"的数字。当我尝试使用
将其转换为int时int i = Integer.parseInt(myVar)
或
的bigintegerBigInteger bi = new BigInteger(myVar)
我得到错误
java.lang.NumberFormatException: For input string: "2015.0"
我如何才能获得正确的演员?
谢谢!
您可以将其解析为BigDecimal
,然后转换为BigInteger
BigInteger bi = new BigDecimal("2015.0").toBigInteger()
请注意,这样做时您可能会丢失精度信息:
...这个大数的任何部分都将被丢弃。请注意,此转换可能会丢失有关BigDecimal值精确度的信息。
如果转换不精确,则会引发异常(换句话说,如果丢弃了非零的分数部分),使用tobigintegerexact()方法。
如引用的Javadocs中所建议的,使用toBigIntegerExact()
防止精确的意外损失,例如将"2.5"
转换为BigInteger
所产生的精度(感谢Ole v.v.的评论。
您也可以将其解析为 double
,然后将其施放到int
int i = (int) Double.parseDouble(myVar);
您不能将float
转换为BigInteger
,并且您的字符串具有小数点,因此自动被认为是float
。您有几个选项,但最简单的可能是从字符串中剥离小数部分以获取" 2015",然后使用来构造您的BigInteger
。
当然,这是假设该数字的小数部分没关系。如果确实如此,请考虑使用BigDecimal
,而是考虑。