[英]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.