如何在C#中将CrmFloat值转换为double值?
解决C#中CrmFloat转double的问题
我之前也踩过这个坑!直接用Convert.ToDouble(crmfloatval)不行,是因为CrmFloat是CRM系统提供的自定义包装类型,不是.NET原生的数值类型,Convert方法没法直接识别它。给你几个实测有效的解决办法:
方法1:直接访问Value属性(最推荐)
绝大多数CRM的CrmFloat结构体都会暴露一个Value属性来存储实际的浮点数值,直接取这个属性就行:
// 确保crmfloatval不为null再访问Value,避免空引用异常 double convertedValue = crmfloatval.Value;
如果CrmFloat可能为null(对应CRM字段为空的情况),记得加空判断:
double convertedValue = crmfloatval?.Value ?? 0.0; // 空的话默认用0.0
方法2:通过decimal中转转换
有些场景下如果直接访问Value有问题,CrmFloat通常支持隐式转换为decimal,再转成double就可以了:
double convertedValue = (double)(decimal)crmfloatval;
这个方法适合那些对隐式转换做了重载的CrmFloat实现。
方法3:使用类型自身的转换方法
部分CRM的CrmFloat类型会自带转换方法,比如ToDouble(),可以先检查一下有没有这个方法:
double convertedValue = crmfloatval.ToDouble();
注意事项
- 一定要处理空值情况:如果CRM字段允许为空,CrmFloat可能是
Nullable<CrmFloat>类型,先判断crmfloatval.HasValue再操作,避免抛出NullReferenceException。 - 如果是早期的CRM版本,可能需要先把CrmFloat转成
object再用Convert,但这个方法不推荐,容易出问题。
内容的提问来源于stack exchange,提问作者Anurag
相关产品推荐
相关产品推荐

