"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
来源:学生作业学帮网 编辑:学帮网 时间:2024/04/30 01:57:06
"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
误差在计算中的累积的问题.
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也可以,只不过大家习惯上整数用int小数用double,不用考虑太多位数上的问题,多分配点空间是可以接受的。
1/(1-1/2)/(1-1/3)/(1-1/4)/……/(1-1/2012)
(1/2+1/3+1/4+……+1/2013)(1+1/2+1/3+1/4+……+1/2012)-(1+1/2+1/3+……+1/2013)(1/2+……+1/2012)
(1-1/2)×(1-1/3)×(1-1/4)……×(1-1/2008)计算方法
200×(1-1/2)×(1-1/3)×(1-1/4)×……×(1-1/100)=?
计算:(1-1/2)*(1-1/3)*(1-1/4)*……*(1-1/10).
(1/2+1/3+1/4+1/5+……+1/2007)*(1+1/2+1/3+1/4+……+1/2006)………………计算:(1/2+1/3+1/4+1/5+……+1/2007)*(1+1/2+1/3+1/4+……+1/2006)-(1+1/2+1/3+1/4+……+1/2007)*(1/2+1/3+1/4+^+1/2006)要求简算
(1/1+2)+(1/1+2+3)+(1/1+2+3+4)+………+(1/1+2+3+………+100)
(1-1/2)(1-1/3)(1-1/4)………………(1-1/99)(1-1/100)
计算 (1+1/2)×(1+1/3)×(1+1/4)×……×(1+1/7)×(1+1/8)×计算 (1+1/2)×(1+1/3)×(1+1/4)×……×(1+1/7)×(1+1/8)×(1+1/9)
1+2+3+4……+100000好的加分…………急…………………………快……………………………………
1+2+3+4+5…………+100000000
1+2+3+4+……+10000
1×2×3×4……×101
1+2+3+4……+101
求和:1/1×2+1/2×3+1/3×4+……+1/n(n+1)
1+2+3+4+5+6……………………+100000000=?
(1/2+1/3+1//4+…+1/2005)(1+1/2+1/3+1/4+…+1/2004)-(1+1/2+1/3+1/4+…+1/2005)(1/2+1/3+1/4+…+1/2004计算1/2+1/3+1//4+…+1/2005)(1+1/2+1/3+1/4+…+1/2004)-(1+1/2+1/3+1/4+…+1/2005)(1/2+1/3+1/4+…+1/2004)
(1/3+1/4……+1/2006)(1/2+1/3……+1/2006)-(1/2+1/3+……+1/2006)(1/3+1/4……+1/2005)