C#并行。但参数为双精度

C#并行。但参数为双精度,c#,parallel-processing,double,C#,Parallel Processing,Double,所以,我有一个for循环,我正在尝试并行化,但是这个for循环接受了一个double作为参数,出于某种原因,C讨厌这个。我不能把它转换成一个整数,因为当我这样做的时候,它会给我一个越界的错误,而且不那么准确。有什么办法可以解决这个问题吗?或者我可以使用一种不同的并行方法 这是原始for循环: for (ii = 0; ii < 2 * Math.Floor((double)N / (double)wSamp) - 1; ii++) { \\Code is added here }

所以,我有一个for循环,我正在尝试并行化,但是这个for循环接受了一个double作为参数,出于某种原因,C讨厌这个。我不能把它转换成一个整数,因为当我这样做的时候,它会给我一个越界的错误,而且不那么准确。有什么办法可以解决这个问题吗?或者我可以使用一种不同的并行方法

这是原始for循环:

for (ii = 0; ii < 2 * Math.Floor((double)N / (double)wSamp) - 1; ii++)
{
   \\Code is added here
}

因为Parallel.For只能接受前两个字段中的整数。平行线。For不是实际的For循环。它是作为并行类的一部分的函数调用

请参阅文档:

特别是看看参数定义。这是来自64位int重载。 参数 从包含 Int64 开始索引,包括在内

排外的 Int64 结束索引,独占

身体 行动
每次迭代调用一次的委托。

您可以将
Floor
的输出强制转换为
int

Parallel.For(0, 2 * (int)Math.Floor((double)N/(double)wSamp) - 1, ii => {
    \\Code is added here
});
如果您知道
N
wSamp
具有相同的符号,您甚至可以移除
地板

Parallel.For(0, 2 * (int)((double)N/(double)wSamp) - 1, ii => {
    \\Code is added here
});

我不知道代码类型> N<代码> >代码> WSAMP是什么,但它们是“代码> INT/CODE >,也可以考虑使用<代码>操作符/<代码>的内置重载,这两个代码使用INTHECTINTIN/INSCOR>S,并返回<代码> int <代码>结果:

Parallel.For(0, 2 * (N / wSamp) - 1, ii => {
    \\Code is added here
});

ii
变量的类型是什么?它会产生什么错误?当您要求运行循环3.14次时,您预计会发生什么?对于迭代次数来说,使用
double
究竟想要实现什么是非常不清楚的,而且很难使用非整数值实现“独占”边界。。。
Parallel.For(0, 2 * (N / wSamp) - 1, ii => {
    \\Code is added here
});