所以我一直在尝试将我的字符串转换为整数,并且我得到一个数字格式异常。我将一串813.0传递给下面的对象,但它失败了。
totals.setTotalPremium(Integer.parseInt(r.getTotalpremium().replace(",","").trim()));
尝试使用Double.parseDouble(“813.0”)作为输出返回小数值。 Integer.parseInt()仅在非十进制数的情况下有用。
813.0技术上不是int
,因为它有一个小数位。相反,这是一个float
。您的选择是在小数位之后(包括)删除所有内容,或者将其解析为float
,然后使用您喜欢的任何方法(即舍入与截断)转换为int
。
您可以将其解析为double,然后像这样提取int值:
Double v = Double.parseDouble("813.0");
totals.setTotalPremium(v.intValue());
希望它有所帮助。
首先,考虑setTotalPremium
是否接受double
或float
。或者是否应该。如果是这样,请使用Double.parseDouble("813.0")
或Float.parseFloat("813.0")
。
如果没有,请确定您想要的舍入。如果有的话。对于813.0
来说,它可能很简单,你想要813.但如果它是813.1,813.5,813.8怎么办?
如果你想要舍入到最近的int
使用Math.round(Float.parseFloat("813.0"))
。如果要拒绝不等于int
的数字:
double doubleValue = Double.parseDouble("813.0");
if (doubleValue != Math.rint(doubleValue)) {
throw new IllegalStateException("Not a whole number: " + doubleValue);
}
编辑:在您的代码中,您将用空字符串替换,
(逗号)。如果这是用千位分隔符解析数字,比如1,813.0
,最好不要这样做。而是使用NumberFormat
和/或DecimalFormat
来解析具有一千个分隔符的数字。