标题:哪位高手能帮我看一下 这个程序 当输入96时就不行了 而95之前的数都可以 很 ...
只看楼主
dream4903
Rank: 2
等 级:论坛游民
帖 子:5
专家分:10
注 册:2010-3-28
得分:5 
while(fabs(t)>1e-6);
应该是这里不对,是小于号,绝对值小于10-6
2010-04-15 07:32
遥望江南hsj
Rank: 1
等 级:等待验证会员
帖 子:29
专家分:0
注 册:2010-4-13
得分:0 
谢谢大家了!
2010-06-08 18:58
kingmacrobo
Rank: 2
来 自:HUST
等 级:论坛游民
帖 子:39
专家分:49
注 册:2010-6-1
得分:0 
m 发生了溢出,改成long也不行 ,要改成double的
代码如下:
程序代码:
#include<stdio.h>
#include<math.h>
#define PI 3.1415926
void main()
{   float  a,x,y=1,s=1,p=1,t;
     double m=1,n=0;          //将这里改成double就行了
     printf("please input a float number");
     scanf("%f",&a);
     x=a*PI/180.0;
     do
     { y=y*x*x;
       n=n+2;
       m=m*n*(n-1);
       s=-s;
       t=s*y/m;
       p=p+s*y/m;
     }
     while(fabs(t)>1e-6);
     printf("泰勒近似植为%f\n",p);
     printf("计算器结果为%f\n",cos(x));
} 

但这也只能算到591,之后m就又会发生溢出
要想算更大的数,得想个高精度算法才行。。。
2010-06-08 20:52



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-302875-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.741293 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved