C#中将百分比格式文本框内容转换为double类型出错如何解决
问题原因及解决方案
错误根源
- 调用
ToString("P2")生成的百分比格式字符串默认包含百分号(如原始值0.78格式化后会得到78.00%) - 无参数的
double.Parse方法默认仅支持解析纯数字格式字符串,无法识别百分号等特殊格式字符,因此运行时会抛出格式错误异常
修复方案
使用double.Parse的重载方法,传入NumberStyles.Percent参数明确告知解析器需要处理百分比格式,代码示例如下:
// 需先引入全局化命名空间 using System.Globalization; // 支持百分比格式的解析逻辑 double Gridactually24 = double.Parse(Actuallyday24.Text, NumberStyles.Percent);
如果需要适配多区域环境避免格式差异,可额外指定文化参数:
// 使用不变文化解析,不受系统区域设置影响 double Gridactually24 = double.Parse(Actuallyday24.Text, NumberStyles.Percent, CultureInfo.InvariantCulture);
补充说明
- 按上述方式解析得到的数值会自动将百分比值除以100,和你原始存入的
day25oee24d数值保持一致,无需额外做除法转换 - 如果有特殊需求不需要自动除以100,可以先手动移除字符串中的百分号再调用普通Parse:
double Gridactually24 = double.Parse(Actuallyday24.Text.TrimEnd('%'));
内容的提问来源于stack exchange,提问作者Lukas Klossek
相关产品推荐
相关产品推荐

