我感觉从原理来看确实是一样的,你把第一种num定义为
double看看能否正确解题
我测试了一下代码,唯一能想到的可能是精度问题,我测试了下面的代码没有发现错误,你是哪个情况不行?
#include <stdio.h>
int main()
{
float num;
float res = 1.0;
long st[] = {100000000000, 200000000000, 300000000000000000};
int i;
for (i=0;i<3;i++) {
num = st[i] / 100.0;
res *= (1 - num);
}
printf("res = %f\n", res);
res = 1.0;
for (i = 0; i<3;i++)
res *=(1 - st[i]/100.0);
printf("res = %f\n", res);
}