| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1145 人关注过本帖
标题:哪位高手能帮我看一下 这个程序 当输入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
快速回复:哪位高手能帮我看一下 这个程序 当输入96时就不行了 而95之前的数都可 ...
数据加载中...
 
   



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

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