int x;
scanf("%d",&x);
x=(double)((x*3.14)/180);
printf("%.6lf",x);
运行上面的代码并输入x = 60时,我得到-0.000000。
int x;
double a;
scanf("%d",&x);
a=(x*3.14)/180;
printf("%.6lf",a);
但是当我运行上面的代码时,我得到了正确的答案。
我想知道我在哪里做错了。我的类型转换或使用double或其他任何东西有问题吗?任何帮助将不胜感激。谢谢!
:我需要在小数点后最多输出6位数字。
答案 0 :(得分:5)
您的代码中有两个问题:
x = (double)((x*3.14)/180);
(x*3.14)/180
已经是double
,因此此行等效于:
x = (x*3.14)/180;
但无论如何,x
的类型仍为int
,因此,如果x
例如300
,则x
的新值将为{{1} },将其截断为300 * 3.14/180 = 5.2333
。
第二个问题在这里:
5
如前所述,printf("%.6lf",x);
的类型为x
,但是int
格式说明符需要"%.6lf"
。如果变量类型与格式说明符不匹配,则行为是不确定的。
您的代码的第二个版本是完全正确的,但是请注意,用户只能输入整数值。
顺便说一句:3.14是PI的非常差的近似值,我相信您可以做得更好。