c# - 在 C# 中对小数进行四舍五入并转换为 %

标签 c# rounding

我有一个概率列表,例如

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/

相关文章:

c# - 关闭浏览器时运行sql查询

C# 多个套接字在不同的线程上使用相同的端口

c# - 在 C# 中使用 Async 和 await 时出错

c# - StringBuilder 初始化程序在 VS2015 中以一种方式工作,但在 VS2013 中以另一种方式工作

awk - 使用 awk 和 printf 没有正确舍入

r - formatC() 在 R 中由 round(x) 生成后将 0 视为负数?

c++ - 如何在 C++ 中设置浮点变量的精度

c# - 从 float 转换为 TimeSpan

java - "(int)Math.ceil(double)"始终返回 1,即使值大于 1

java - 将 double 舍入为 3 位有效数字