因此,我一直在尝试将我的字符串转换为整数,并且遇到数字格式异常。我正在将813.0的字符串传递给下面的对象,但是失败。
totals.setTotalPremium(Integer.parseInt(r.getTotalpremium().replace(",","").trim()));
答案 0 :(得分:2)
813.0从技术上讲不是int
,因为它有一个小数位。而是float
。您的选择是剥除小数点后(包括小数点)的所有内容,或将其解析为float
,然后使用您喜欢的任何方法转换为int
(即舍入或截断)
答案 1 :(得分:0)
您可以将其解析为两倍,然后像这样提取int值:
Double v = Double.parseDouble("813.0");
totals.setTotalPremium(v.intValue());
希望有帮助。
答案 2 :(得分:0)
尝试使用Double.parseDouble(“ 813.0”),因为您的输出将返回十进制值。 Integer.parseInt()仅在非十进制数字的情况下才有用。
答案 3 :(得分:0)
首先,考虑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
来解析具有千位分隔符的数字。