Java 如何在变量包含";时将字符串转换为BigInteger;。0“;
我有一个字符串变量,它可能包含一个数字,比如“2015.0”。 当我试图用Java 如何在变量包含";时将字符串转换为BigInteger;。0“;,java,casting,biginteger,Java,Casting,Biginteger,我有一个字符串变量,它可能包含一个数字,比如“2015.0”。 当我试图用 int i = Integer.parseInt(myVar) 或带有 BigInteger bi = new BigInteger(myVar) 我得到了错误 java.lang.NumberFormatException: For input string: "2015.0" 如何获得正确的演员阵容 谢谢 您可以将其解析为BigDecimal,然后转换为biginger BigInteger bi = ne
int i = Integer.parseInt(myVar)
或带有
BigInteger bi = new BigInteger(myVar)
我得到了错误
java.lang.NumberFormatException: For input string: "2015.0"
如何获得正确的演员阵容
谢谢 您可以将其解析为
BigDecimal
,然后转换为biginger
BigInteger bi = new BigDecimal("2015.0").toBigInteger()
请注意,执行此操作时可能会丢失精度信息:
…此BigDecimal的任何小数部分都将被丢弃。请注意,此转换可能会丢失有关BigDecimal值精度的信息
若要在转换不精确时引发异常(换句话说,如果丢弃了非零的小数部分),请使用toBigIntegerExact()方法。
正如引用的javadocs中所建议的那样,使用
ToBiginteRexact()
以防止意外的精度损失,例如将“2.5”
转换为大整数所导致的精度损失(感谢您的这句话)。您不能将浮点
转换为大整数
,您的字符串有一个小数点,因此它自动被认为是一个浮点值
。您有几个选项,但最简单的可能是从字符串中去掉小数部分,得到“2015”,然后使用它来构造您的biginger
当然,这是假设数字的小数部分无关紧要。如果是这样,考虑使用<代码> BigDecimal <代码>,而 您也可以将其解析为<代码>双,然后将小数部分投到<代码> INT/INS> < /P>中,然后删除小数部分。
int i = (int) Double.parseDouble(myVar);
对的在大多数情况下,我宁愿toBigIntegerExact
捕捉无法进行精确转换的情况。@OleV.V。那么它与OP尝试的方法没有什么不同,您只会得到一个不同的异常。@Tom我从新的BigDecimal(“2015.0”)中没有得到异常。TobiginteRexact()
。谢谢,我认为这是一个完美的解决方案。