【发布时间】:2019-10-08 16:39:50
【问题描述】:
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 位。
【问题讨论】:
-
x是一个int。您不能随意将其设为double。 -
与其他语言(例如 python)不同,C 不会更改变量的类型以匹配值。相反,它会更改值的类型以匹配变量。由于
x被声明为int,分配给x的任何值都将转换为int。 -
3.14?͏͏͏͏͏͏͏͏͏͏͏͏͏ -
你没有使用
pi。你正在使用3.14。 -
@PratikSampat:除了
M_PI不是标准要求的,所以你的代码是不可移植的。哦,快乐!