这个int和double类型相除相乘什么的,不太懂,求解。。

P1035 [NOIP2002 普及组] 级数求和

陈大熊一级棒 @ 2019-11-20 16:10:44

int main()
{int a,k,i;
double s=0;
scanf("%d",&k);
for(i=1; ;i++)
{
s=1/i+s;\\如果这里把1改为1.0就可以有正确结果了。为啥
if(s>k)
break;
}
printf("%d",i);
return 0;
 } 

by 陈大熊一级棒 @ 2019-11-20 16:10:52

如果这里把1改为1.0就可以有正确结果了。为啥


by 神山识 @ 2019-11-20 16:11:44

当然了啊,int/int 和 double/double 的结果可能是一样的吗?


by Windowsredstone @ 2019-11-20 16:13:24

类型。

1会当int来算,而1.0会转成double

(double)1也可以

@陈大熊一级棒


by 陈大熊一级棒 @ 2019-11-20 16:23:39

@我不是箭毒蛙 就是int/int用于double类型的输出不了?


by 陈大熊一级棒 @ 2019-11-20 16:23:48

@Windowsredstone 就是int/int用于double类型的输出不了?


by ud2_ @ 2019-11-20 17:03:30

@陈大熊一级棒

int 运算保留整数部分, \frac 1 i 取整数部分只能是 0 或 1。而 double 运算就可以保留一定位数的小数。


by Windowsredstone @ 2019-11-20 17:13:52

@sjx233_

t=-1


by ud2_ @ 2019-11-20 17:16:34

@Windowsredstone ^

@陈大熊一级棒 另外,注释的斜杠写反了。


|