Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在变量包含";时将字符串转换为BigInteger;。0“;_Java_Casting_Biginteger - Fatal编程技术网

Java 如何在变量包含";时将字符串转换为BigInteger;。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

我有一个字符串变量,它可能包含一个数字,比如“2015.0”。 当我试图用

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()
。谢谢,我认为这是一个完美的解决方案。