C# 无法从';双倍?';至';十进制';
我正在读取一个XML文件并解析信息。我正在尝试将double转换成这样的intC# 无法从';双倍?';至';十进制';,c#,xml,double,converter,C#,Xml,Double,Converter,我正在读取一个XML文件并解析信息。我正在尝试将double转换成这样的int var pruebaPago = Math.Ceiling(row[i].Pagado); 但是,当我运行代码时,会出现以下错误: cannot convert from 'double?' to 'decimal' XML文件对Pagado <s:element name="Pagado" type="s:double" nillable="true"/> 如何转换可为零的值并将其四舍五入为最
var pruebaPago = Math.Ceiling(row[i].Pagado);
但是,当我运行代码时,会出现以下错误:
cannot convert from 'double?' to 'decimal'
XML文件对Pagado
<s:element name="Pagado" type="s:double" nillable="true"/>
如何转换可为零的值并将其四舍五入为最接近的整数?您需要使用
Nullable.value
。您还需要首先检查该值是否不是null
:
if (row[i].Pagado.HasValue)
{
var pruebaPago = Math.Ceiling(row[i].Pagado.Value);
}
当前的重载解析发现
十进制
重载与数学天花板
最匹配,因为您传递的是双精度?
而不是双精度
,如果他必须有一个值,可能最好跳过检查并使用GetValueOrDefault()
@KyleW我不确定他是否真的有一个值(由于该字段可为空,GetValueOrDefault
将生成double(0.0)的默认值。我不确定这是他想要的。谢谢@YuvalItzchakov,这是正确的,我还必须记住将值转换为百分比。