簡體   English   中英

如何防止由於將字符串轉換為int而導致的數字格式異常

[英]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是否接受doublefloat 或者是否應該。 如果是這樣,請使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM