根据图片,我想在我的 c# 项目中使用 excel percentrant 函数。解决办法是什么?
问问题
2766 次
3 回答
4
基于这个线程:
private static double PercentRank(List<double> matrix, double value)
{
matrix.Sort();
for (int i = 0; i < matrix.Count; i++)
if (matrix[i] == value)
return ((double)i) / (matrix.Count - 1);
// calculate value using linear interpolation
double x1, x2, y1, y2;
for (int i = 0; i < matrix.Count - 1; i++)
{
if (matrix[i] < value && value < matrix[i + 1])
{
x1 = matrix[i];
x2 = matrix[i + 1];
y1 = PercentRank(matrix, x1);
y2 = PercentRank(matrix, x2);
return (((x2 - value) * y1 + (value - x1) * y2)) / (x2 - x1);
}
}
throw new Exception("Out of bounds");
}
于 2013-07-29T08:49:14.033 回答
0
JavaScript 中的示例实现(与Office 文档中的结果匹配)。
function percentrank(x, vec) {
var s = 0;
var b = 0;
for (var k = 0; k < vec.length; k++) {
if (vec[k] < x) {
s += 1;
} else {
b += 1;
}
}
return s/(s+b-1);
}
用法:
percentrank(2, [13, 12, 11, 8, 4, 3, 2, 1, 1, 1])
于 2014-11-19T14:17:39.267 回答
-4
您可以使用 interOp 库。但是,如果应该小心使用它,因为如果存在漏洞或内存泄漏,它可能会以失败告终。这是由于您调用并创建了一个单独的进程来完成您的工作。特别不推荐用于 ASP.net。
以下是一篇关于如何做到这一点的好文章。
于 2013-07-29T08:45:43.820 回答