printf("pi=%.12f\n"(4.0 * (double)sum)/n/n);
上述代码,如果sum的类型是double,就没有问题,如果是int或long,就得不出正确结果,的确不明白为什么啊
补充:
看了几位回答,应该是我的问题不明确,在代码中的double sum=0;如果使用long sum或者int sum,就会得到不正确的结果(不是编译不通过)。
但事实上,我的sum的确也只用的整形的加减(sqrt的结果强制转换),至于打印的时候,为了打印出小数位,把int和long转换成double,我认为也是没有问题的。
大家怎么看?
你所谓的不对到底是最后输出不对,还是中间调试值不对
如果仅仅是输出不对,可能是因为你最后的printf语句中%.12f这里问题,这里需要后面对应数据是浮点数的,否则输出是有问题的。