"1-1/2+1/3-1/4+……+1/99-1/100求值,想问这里的double为啥不能换成float?
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/09/25 18:37:52
"1-1/2+1/3-1/4+……+1/99-1/100求值,想问这里的double为啥不能换成float?
int main(int argc, char *argv[])
{
double s=0;
int i;
for(i=1;i
int main(int argc, char *argv[])
{
double s=0;
int i;
for(i=1;i
误差在计算中的累积的问题.
float单精度浮点,double双精度浮点.
例如,自然数学中我们都知道1/6=0.1666666.是无穷小数,但是计算机中无法表示无穷小数,只能按一定精度截断.假设(仅仅是假设,只是为了说明问题,实际计算机中可能精度更高)
float 取0.167,double取0.1667,double的截断误差小于float.由于你的算法采用的迭代的方法,误差每一次都在累积.因此会出现float误差很大,double相对较小的现象.
况且,你的算式中不仅只有1/6,还有1/7,1/11.等很多无穷小数截断后的误差在累积.
因此,使用double比float好!
float单精度浮点,double双精度浮点.
例如,自然数学中我们都知道1/6=0.1666666.是无穷小数,但是计算机中无法表示无穷小数,只能按一定精度截断.假设(仅仅是假设,只是为了说明问题,实际计算机中可能精度更高)
float 取0.167,double取0.1667,double的截断误差小于float.由于你的算法采用的迭代的方法,误差每一次都在累积.因此会出现float误差很大,double相对较小的现象.
况且,你的算式中不仅只有1/6,还有1/7,1/11.等很多无穷小数截断后的误差在累积.
因此,使用double比float好!
"1-1/2+1/3-1/4+……+1/99-1/100求值,想问这里的double为啥不能换成float?
英语翻译(1)数据类型关键字12个char,double,enum,float,int,long,short,signe
若有声明“char a= 0 ; int b=1; float c=2; double d =3;”,则表达式“c=a+
【c++】现有三个函数(1)double Add(double a) (2)double Add(double a,do
1,若有以下定义,char a;int b;float c;double d;则表达式a*b+d-c值的类型为( )
double s=pow(2,double(1/3))结果是s=1,问题在于double(1/3)=0,
// void fun( float y ,float x[],) { x[0] = x[1] + x[2]; y =
FLOAT,DOUBLE的范围
1+3+5+.+(2n-1)为啥这里要乘n
若double a=1.0/2,输出a为多少呢?而且有时float型也可以表示成1或者1.0这种诶,不是得有7位有效数字
问高中生物题问最后一个空问3:1怎么来的这个D为啥不对
C语言 float a[5][4]={{2,3,4},{5,6,7},{8,9,1}};