小数点以下2桁を除算して、結果を表示しようとすると問題が発生します。迷惑なことに、これはサーバーでのみ発生しており、コードをローカルで実行すると完全に正常に機能しているように見えます。これは私が実行しようとしているコードです
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桁までしか保持できないため、これはある程度意味があります。ただし、結果が小数点以下に格納されているように見えるため、この除算を実行する方法がわかりません。四捨五入して格納する前に、メモリに入力します。また、小数で格納するのではなく、文字列に直接変換しようとしましたが、同じ問題があります。
何か案は?私は明らかにばかげたことをしましたか(おそらく)、この計算を実行するためのより良い方法はありますか?