簡體   English   中英

double.Parse在DataGridView單元格值上不起作用

[英]double.Parse not working on DataGridView Cell Value

我有一個DataGridView ,我想根據單元格值將格式更改應用於其中。 我想使用原始的DataTable源來執行此操作,但是不幸的是,構建源需要刪除並重新定向某些行,以便關閉索引。 因此,我正在嘗試使用

 double.TryParse(DataGridView
                .Rows[index]
                .Cells["ColumnName"]
                .FormattedValue.ToString(), out dbl);

但是,它永遠不會將值識別為兩倍。 我已經使用MessageBox驗證了輸出,並且在MessageBox字符串的兩邊都添加了“-”,因此沒有前導或尾隨空格可能引起問題。 我不知道為什么即使對於明顯可以解析為雙精度的值,它總是將其視為非雙精度值。

編輯:我不確定周末會發生什么變化,但是我進來了,修復了與此無關的另一個錯誤,現在粗體正在使用.Value而不是下面的gh0st建議的.FormattedValue。

double.TryParse()將以與文化相關的方式解析字符串。 您當前的區域性很可能希望小數點是其他符號,例如逗號或其他符號。

例如,在我的機器上,我可以通過傳遞不同的區域性來強制其解析失敗,如下所示:

double.TryParse("1.2", 
                NumberStyles.Float | NumberStyles.AllowThousands, 
                CultureInfo.GetCultureInfo("fr-FR"), 
                out dbl); // returns false

如果這是您正在發生的事情,那么您要么找到一種改變當前區域性的方法,要么可以用這種方式進行解析來確保一致的結果:

double.TryParse("1.2", 
                NumberStyles.Float | NumberStyles.AllowThousands, 
                CultureInfo.InvariantCulture,
                out dbl); // returns true

(*)注意: NumberStyles.Float | NumberStyles.AllowThousands 您可以根據需要調整NumberStyles.Float | NumberStyles.AllowThousands值。 我只是在此示例中將其設置為該值,因為這是使用帶有較少參數的重載時TryParse方法使用的默認值。

暫無
暫無

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

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