我在尝试将两位小数相除然后显示结果时遇到问题。令人讨厌的是,这只发生在我们的服务器上,如果我在本地运行代码,它似乎工作得很好。这是我试图运行的代码
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 位。但我不确定如何执行这种除法,因为它似乎将结果存储在小数点中输入内存,然后将其四舍五入并存储。我也尝试将其直接转换为字符串,而不是将其存储在十进制中,但这也有同样的问题。
有任何想法吗?我是否做了一些明显愚蠢的事情(很可能),有没有更好的方法来执行这个计算?