gpt4 book ai didi

在 C 中将度数转换为弧度时的混淆结果

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:35 25 4
gpt4 key购买 nike

  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 = (double)((x*3.14)/180);

(x*3.14)/180 已经是一个 double 因此这一行等同于:

x = (x*3.14)/180;

但无论如何 x 的类型仍然是 int,所以如果 x 是例如 300,新值x 将是 300 * 3.14/180 = 5.2333,它将被截断为 5

第二个问题在这里:

printf("%.6lf",x);

如前所述,x 的类型是int,但是"%.6lf" 格式说明符需要一个double 。如果变量类型与格式说明符不匹配,则行为未定义。

您的代码的第二个版本完全正确,但请注意,用户只能输入整数值。

顺便说一句:3.14 是一个非常差的 PI 近似值,我相信你可以做得更好。

关于在 C 中将度数转换为弧度时的混淆结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56252624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com