2015-06-29 2 views
3

Я читаю XML-файл, и я разбираю информацию. Я пытаюсь преобразовать двойной к междунар как этотне может конвертировать из 'double?' to 'decimal'

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 и округлить его до ближайшего целого?

ответ

7

Вы хотите использовать Nullable<double>.Value. Вы также хотите, чтобы проверить, что значение не null первым:

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

Текущее разрешение перегрузки находит decimal перегружать лучший матч за Math.Ceiling, как вы пройти double? и не double.

+0

Если он все равно должен иметь значение, возможно, лучше пропустить проверку и использовать 'GetValueOrDefault()' –

+0

@KyleW. Я не уверен, что у него действительно есть значение (поскольку поле является нулевым) и 'GetValueOrDefault' будет давать значение по умолчанию для double (0.0). Я не уверен, что он этого хочет. –

+0

Спасибо @YuvalItzchakov, что правильно, я также должен был помнить, чтобы преобразовать значения в проценты. –

Смежные вопросы