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