辞書に引数をとり、辞書を返すコードがあります。パーセンテージを計算するときにオーバーフロー例外がスローされる
コードは、すべてのdouble値の合計を計算し、その合計を使用して、各値が合計の何パーセントであるかを計算します。パーセンテージをキーに連結した新しいディクショナリを返します。
Webサーバーのイベントビューアには、一部のオーバーフロー例外が記録されています。ログは、次のコードで例外が発生したことを記録します。Decimal percentage = (Decimal) (pDataPoints[key]/sum * 100);
値を10進数にキャストするときに例外が発生すると報告されています。
どのようなエッジケースがありますか?
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;
}
私はあなたがあなたのものに 'DivideByZeroException'' 0/0 'とC#のコードをクラッシュすることができます私は 'OverflowException'とあまり良くないんだけど、あなた今すぐ正しい場所にいます... – gdoron
@Rice Flour Cookies - btw、なぜパーセンテージを10進数に変換していますか?あなたがダブルスと一緒にいれば、それはよかったですか? – empi