【问题标题】:cannot convert from 'double?' to 'decimal'无法从“双倍”转换? '十进制'
【发布时间】:2015-09-16 08:24:16
【问题描述】:

我正在读取一个 XML 文件并解析信息。我正在尝试将双精度转换为这样的 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"/>

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

【问题讨论】:

    标签: c# xml double converter


    【解决方案1】:

    您需要使用Nullable&lt;double&gt;.Value。您还需要首先检查该值是否不是null

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

    当前的重载解析发现 decimal 重载与 Math.Ceiling 最匹配,因为您传递的是 double? 而不是 double

    【讨论】:

    • 如果他必须有一个值,最好跳过检查并使用GetValueOrDefault()
    • @KyleW 我不确定他是否真的有一个值(因为该字段可以为空),而GetValueOrDefault 将产生双精度(0.0)的默认值。我不确定这就是他想要的。
    • 谢谢@YuvalItzchakov,这是正确的,我还必须记住将值转换为百分比。
    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 2021-07-29
    • 1970-01-01
    • 2015-08-21
    • 2017-11-13
    相关资源
    最近更新 更多