我有将字典作为参数并返回字典的代码。
该代码计算所有双精度值的总和,并使用总和来计算每个值占总和的百分比。它返回一个新的字典,其中百分比连接到键上。
我的 Web 服务器的事件查看器中记录了一些溢出异常。日志记录异常发生在以下代码上Decimal percentage = (Decimal) (pDataPoints[key] / sum * 100);
它说将值转换为小数时发生异常。
我可能会错过什么边缘情况?
public static Dictionary<string, double> addPercentagesToDataPointLabels(Dictionary<string, double> pDataPoints)
{
Dictionary<string, double> valuesToReturn = new Dictionary<string, double>();
// First, compute the sum of the data point values
double sum = 0;
foreach (double d in pDataPoints.Values)
{
sum += d;
}
// Now, compute the percentages using the sum and add them to the new labels.
foreach (string key in pDataPoints.Keys)
{
string newKey = key;
Decimal percentage = (Decimal) (pDataPoints[key] / sum * 100);
percentage = Math.Round(percentage, ChartingValues.DIGITS_AFTER_DECIMAL_POINT);
newKey += " " + percentage.ToString() + "%";
valuesToReturn.Add(newKey, pDataPoints[key]);
}
return valuesToReturn;
}