重複の可能性:
浮動小数点の精度
いくつかの浮動小数点数を使用して確率を計算しようとしていますが、常に最終結果がゼロになります。以下のコードと例を見つけてください。
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 番目の属性の結果は上記のプログラムから取得されています。3 行目は、OK と FRAUD からの 5 つの値すべての積を表しています。しかし、私の最終結果はゼロになり、値を比較できません。