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