下面的方法应该回答"小数精度,尾随数量的数量,这个(双重)值有什么?".当值看起来像5900.43,5900.043等时,我做对了.当方法收到5900.00时,它返回0,这是错误的(在我的需要).
/// <summary>
/// Return count of decimals after decimal-place
/// </summary>
private int getDecimalCount(double val)
{
int count = 0;
...
return count;
}
Run Code Online (Sandbox Code Playgroud)
参数'val'是(此方法的正常值的样本)
5900.00 return 2
5900.09 return 2
5900.000 return 3
5900.001 return 3
1.0 return 1
0.0000005 return 7
1.0000000 return 7
5900822 return 0
我的问题是计算.0 .00 .000等等
问题:
我该如何解决这个问题?如果这种方法不可能与双打,怎么回事?
[已编辑]
- 对文本进行较小修改以提出更明确的问题,
- 由于"小数位"的错误使用含义而导致的语言更正
我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)