我在尝试除以两位小数然后显示结果时遇到问题。令人烦恼的是,这只发生在我们的服务器上,如果我在本地运行代码,它似乎工作得很好。这是我试图运行的代码
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 位..但我不确定如何执行此除法,因为它似乎将结果存储在小数中在内存中输入,然后四舍五入并存储它。我也尝试过将其直接转换为字符串而不是将其存储为十进制,但这也存在同样的问题。
有任何想法吗?我是否做了一些明显愚蠢的事情(最有可能),是否有更好的方法来执行此计算?
尝试转换为double
计算之前,然后返回decimal
之后如果您需要:
decimal dOne = -966.96M;
decimal dTwo = 2300M;
double one = (double)dOne;
double two = (double)dTwo;
double result = one / two;
decimal dResult = (decimal)result; // Additional rounding may be necessary
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)