[英]How to prevent a number format exception caused by converting string to an int
因此,我一直在嘗試將字符串轉換為整數,並且遇到數字格式異常。 我將813.0的字符串傳遞給下面的對象,但是失敗了。
totals.setTotalPremium(Integer.parseInt(r.getTotalpremium().replace(",","").trim()));
從技術上講,813.0不是int
,因為它有一個小數位。 而是一個float
。 您的選擇是剝除小數點后(包括小數點后)的所有內容,或將其解析為float
,然后使用您喜歡的任何方法(即舍入或截斷)轉換為int
。
您可以將其解析為兩倍,然后像這樣提取int值:
Double v = Double.parseDouble("813.0");
totals.setTotalPremium(v.intValue());
希望對您有所幫助。
嘗試Double.parseDouble(“ 813.0”),因為您的輸出返回十進制值。 Integer.parseInt()僅在非十進制數字的情況下才有用。
首先,考慮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
來解析具有千位分隔符的數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.