Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从';双倍?';至';十进制';_C#_Xml_Double_Converter - Fatal编程技术网

C# 无法从';双倍?';至';十进制';

C# 无法从';双倍?';至';十进制';,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"/> 如何转换可为零的值并将其四舍五入为最

我正在读取一个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"/>


如何转换可为零的值并将其四舍五入为最接近的整数?

您需要使用
Nullable.value
。您还需要首先检查该值是否不是
null

if (row[i].Pagado.HasValue)
{
    var pruebaPago = Math.Ceiling(row[i].Pagado.Value);
}

当前的重载解析发现
十进制
重载与
数学天花板
最匹配,因为您传递的是
双精度?
而不是
双精度

,如果他必须有一个值,可能最好跳过检查并使用
GetValueOrDefault()
@KyleW我不确定他是否真的有一个值(由于该字段可为空,
GetValueOrDefault
将生成double(0.0)的默认值。我不确定这是他想要的。谢谢@YuvalItzchakov,这是正确的,我还必须记住将值转换为百分比。