У меня возникла проблема с попыткой разделить два десятичных знака, а затем отобразить результат. Досадно, что это происходит только на нашем сервере, и, кажется, он отлично работает, если я запускаю код локально. Это код, который я пытаюсь запустить
decimal dOne = -966.96M;
decimal dTwo = 2300M;
decimal dResult = Decimal.Round((dOne / dTwo), 28,
MidpointRounding.AwayFromZero);
Результирующее число (сгенерированное из калькулятора Windows) равно
-0.43346086956521739130434782608696
Это всегда приводит к исключению переполнения:
System.OverflowException: Value was either too large or too small for a Decimal.
at System.Decimal.FCallDivide(Decimal& result, Decimal d1, Decimal d2)
at System.Decimal.op_Division(Decimal d1, Decimal d2)
Это имеет смысл, поскольку результирующее число имеет длину более 32 знаков после запятой, а десятичное число может содержать только до 28 знаков. введите в памяти, прежде чем округлить и сохранить. Я также пытался преобразовать его непосредственно в строку, а не хранить в десятичном виде, но у него та же проблема.
Любые идеи? Я сделал что-то явно глупое (скорее всего), и есть ли лучший способ выполнить этот расчет?