在C#中舍入到超过15个小数位

Jam*_*ery 0 c# math rounding

Math.Round(decimal d, int decimals)在C#中使用将小数舍入到指定的小数位数.我可以舍入 15位小数,但是当我尝试舍入到16时,例如,我得到以下异常:

mscorlib.dll中出现未处理的"System.ArgumentOutOfRangeException"类型的异常附加信息:舍入数字必须介于0和15之间(包括0和15).

是否有任何方法可以舍入到更高的小数位数,也许没有使用Math.Round

为了给出更多问题的背景知识,我正在计算非理性数学常数,例如'pi'和'e',并让用户指定要计算的小数位数.用于检查值和先前值是否与给定精度相同的布尔值如下:

Math.Round(valuePrevious, decPlaces) == Math.Round(valueCurrent, decPlaces)
Run Code Online (Sandbox Code Playgroud)

Jak*_*rtz 6

你没有使用Math.Round(decimal d, int decimals),你正在使用Math.Round(double d, int decimals).确保valuePreviousdecimal,不double.

双打最多可以舍入到15位数.小数到28位.这是这些类型支持的最大精度.