我有一个概率列表,例如
0.0442857142857143
0.664642857142857
0.291071428571429
我想将它们转换为最接近的百分比,以便百分比之和为 100
所以像这样
0.0442857142857143 - 4 %
0.664642857142857 - 67 %
0.291071428571429 - 29 %
我不能依赖 Math.Round 总是给我加起来为 1 的结果。最好的方法是什么?
最佳答案
这是一种可以完成这项工作的方法。
public int[] Round(params decimal[] values)
{
decimal total = values.Sum();
var percents = values.Select(x=> Math.Round(x/total*100)).ToArray();
int totalPercent = perents.Sum();
var diff = 100 - totalPercent;
percents[percents.Lenght - 1] += diff;
return percents;
}
关于c# - 在 C# 中对小数进行四舍五入并转换为 %,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20137562/