繁体   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