函数如下:
double Preprocess:: CalChiSquareValue(int N11,int N10,int N01,int N00)
{
double chiSquare=0;
chiSquare=double(N11+N10+N01+N00)*pow(double(N11*N00-N10*N01),2)/double((N11+N01)*(N11+N10)*(N10+N00)*(N01+N00));
return chiSquare;
}
其中int N11=3;
int N10=9;
int N01=474;
int N00=514;
最后chiSquare结果为负数
我自己调试发现问题的部分为:
double((N11+N01)*(N11+N10)*(N10+N00)*(N01+N00));
这个结果为负数(本来应该为正数,matlab计算就是正数)。把数据类型用double换成long double仍然解决不了问题
程序报一个waring为:Warning 1 warning C4307: '*' : integral constant overflow