Вы не предоставили много информации, но вот одна идея.
Вы используете Nullable Types (типы, оканчивающиеся на ?
), но, похоже, на самом деле не проверяете, являются ли они пустыми. (Возможно, вы пропустили код). Если вы знаете, что они не будут нулевыми, не используйте обнуляемые типы. Это избавит вас от всех .Value
терминов в вашем выражении.
Это изменит ваше выражение на:
total = (decimal)Math.Ceiling((double)quantity * (double)days * (double)multiplier);
Я не знаю, почему вы приводите каждый множитель к double
. Я бы предпочел умножить их все вместе перед тем, как привести к double
. (внимательно проверьте на предмет потери точности.)
Это изменит ваше выражение на:
total = (decimal)Math.Ceiling((double)(quantity * days * multiplier));
В целом, это выглядит проще для меня и должно быть таким же хорошим.
(только тестирование точно скажет!)