我在C#中使用Math.Round(decimal d, int decimals)
将小数舍入到指定的小数位数。我可以将舍入到 15个小数位,但是当我尝试舍入到16时,例如,我得到以下异常:
mscorlib.dll中发生未处理的“System.ArgumentOutOfRangeException”类型异常 附加信息:舍入数字必须介于0和15之间(包括0和15)。
有没有办法四舍五入到更高的小数位数,可能没有使用Math.Round
?
为了给问题提供更多背景知识,我正在计算非理性数学常数,例如'pi'和'e',并让用户指定要计算的小数位数。检查值和先前值是否与给定精度相同的布尔值如下:
Math.Round(valuePrevious, decPlaces) == Math.Round(valueCurrent, decPlaces)
答案 0 :(得分:6)
您没有使用Math.Round(decimal d, int decimals)
,而是使用Math.Round(double d, int decimals)
。确保valuePrevious
为decimal
,而不是double
。
答案 1 :(得分:0)
您可能希望使用Decimal.Round()
代替Math.Round()
Decimal.Round最多支持28个小数位
https://msdn.microsoft.com/en-us/library/6be1edhb(v=vs.110).aspx