簡體   English   中英

將 long 傳遞給 Double.parseDouble

[英]Passing long to Double.parseDouble

當我將 100L 之類的數字傳遞給 Double.parseDouble() 時,我得到一個 NumberFormatException。 但是 100L 是一個有效的數字。

編輯:如果通過 100d 或 100f,我沒有收到任何錯誤。 我只買了100L

100L 是一個表示長值 100 的文字。字符串“100L”不是,所以當你將它傳遞給 parseDouble() 時,它理所當然地抱怨。 去掉“L”,你應該沒問題。

更新:不是parseDouble()不喜歡文字語法,而是它不喜歡你明確聲明數字為long (實際上它正在尋找浮點類型。)

來自 JavaDocs, Double.parseDouble();

返回一個新的 double,初始化為由指定 String 表示的值,由 class Double 的 valueOf 方法執行。

句法,

public static double parseDouble(String s) throws NumberFormatException

Throws:
NumberFormatException - if the string does not contain a parsable double.

它期望一個字符串作為參數傳遞。 "100L" 是一個值 long 的文字,而不是字符串。 為避免任何錯誤,請嘗試使用“100”而不是“100L”。

如果通過 100d 或 100f,我沒有收到任何錯誤。 我只買100L?

parseDouble()調用valueOf() ,它專門尋找浮點表示。因為 d 和 f 表示雙精度和浮點數,所以一切正常。 但是,您不應該明確指定數字。 (如100L)


供參考,

NumberFormatException: http://www.ideone.com/DMpUN
正常運行: http://www.ideone.com/QdxXY


“字符串”中的 100l 不是有效數字。 您只需要傳入一個有效的雙字符串。

class test{
    public static void main(String... args){
            System.out.println(Double.parseDouble("100.0000"));
    }}

這工作正常。 正如另一位用戶指出的那樣,在字符串中傳遞“100l”是行不通的,因為 l 意味着將 long 值作為文字數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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