可能重复:
浮点精度
我正在尝试使用一些浮点数来计算概率,但我的最终结果总是为零。请找到以下代码和示例。
sd_attr4_ok = 3022.115234
unknwn_attr4 = 111
mean_attr4_ok = 32824.566406
var_attr4_ok = 9133180.000000
(1/(sqrt(2*3.14)*sd_attr4_ok))*(1/pow(2.71828,((pow((atoi(unknwn_attr4)-mean_attr4_ok),2))/(2*var_attr4_ok))))
请帮助我解决这个问题。
如果我运行下面的程序,我仍然得到 0.000000:
#include <stdio.h>
#include <math.h>
int main()
{
float a=(1/(sqrt(2*3.14)*3022.115234))*(1/pow(2.71828,(pow((111-32824.5666406),2))/(2*9133180)));
printf("The probability is - %f\n",a);
return 0;
}
同样,如果我运行下面的程序,我仍然会得到 0.000000。
#include <stdio.h>
#include <math.h>
int main()
{
float a=(1/(sqrt(2*3.14)*3022.115234));
float b=pow((111-32824.5666406),2)/(2*9133180);
float c=pow(2.71828,b);
float d=1/c;
printf("The probability is %f-%f-%f-%f\n",a,b,c,d);
return 0;
}
我的结果集:
***OK*** 0.908396-0.000084-0.000168-0.000000-0.000000
***FRAUD*** 0.091604-0.000835-0.000835-0.000000-0.000000
***OK FRAUD*** 0.000000 0.000000
如果您看到上面的结果,则第 4 和第 5 个属性结果是通过上述程序得出的。第三行表示来自 OK 和 FRAUD 的所有 5 个值的乘积。但我的最终结果为零,无法比较这些值。