我有一个 String 变量,其中可能包含数字“ 2015.0”。 当我尝试将其转换为int时
int i = Integer.parseInt(myVar)
或BigInteger与
BigInteger bi = new BigInteger(myVar)
我收到错误
java.lang.NumberFormatException: For input string: "2015.0"
我如何获得正确的演员表?
谢谢!
答案 0 :(得分:5)
您可以将其解析为BigDecimal
,然后转换为BigInteger
BigInteger bi = new BigDecimal("2015.0").toBigInteger()
请注意,这样做可能会丢失精度信息:
...此BigDecimal的任何小数部分将被丢弃。请注意,这种转换可能会丢失有关BigDecimal值精度的信息。
要在转换不精确时(换句话说,如果丢弃非零小数部分)引发异常,请使用toBigIntegerExact()方法。
如引用的javadocs中所建议,请使用toBigIntegerExact()
来防止意外的精度损失,例如由于将"2.5"
转换为BigInteger
而导致的精度损失(感谢Ole V.V.'s comment为此)。
答案 1 :(得分:0)
您也可以将其解析为double
,然后通过将其转换为int
来丢弃小数部分
int i = (int) Double.parseDouble(myVar);
答案 2 :(得分:-1)
您无法将float
转换为BigInteger
,并且您的字符串具有小数点,因此它会自动被视为float
。您有几种选择,但最简单的方法可能是从字符串中去除小数部分以获得“ 2015”,然后使用 that 构造您的BigInteger
。
那当然是假设数字的小数部分无关紧要。如果是这样,请考虑改用BigDecimal
。