簡體   English   中英

將String解析為double時發生System.FormatException

[英]System.FormatException when parsing String to double

該代碼在Unity中運行良好。 現在,我在控制台項目中使用相同的代碼,並收到System.FormatException異常。

代碼是:

private double ConvertToNumber(string number)
        {      
            return double.Parse(number, numberStyle);
        }

調用時的參數為:

number = "3.138924e-002"
numberStyle = NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign

有人看到錯誤,還是知道可能是什么原因造成的?

拋出異常是因為無法使用您指定的格式和您自己的當前cultrue將提供的字符串轉換為數字。 除非您指定,否則后者是隱含的。

如果要從數據庫讀取此值,則應使用不變區域性(即,用於在用戶所需的任何位置(用戶界面除外)以一致的方式持久存儲數字和日期的區域性)。

您的代碼變為:

return double.Parse(number, numberStyle, System.Globalization.CultureInfo.InvariantCulture);

相反,如果您需要一種特定的文化,則需要傳遞正確的文化來代替不變的文化。

@ Selvin關於CultureInfo.InvariantCulture是正確的,將其添加為參數可以修復錯誤。

return double.Parse(number, numberStyle, CultureInfo.InvariantCulture);

暫無
暫無

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

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