c++ - 通过 3,14 从度数到弧度的角度转换失败

标签 c++

<分区>

我正在尝试转换角度,但当它“转换”角度时,输出始终显示值零。

代码如下:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
  // Variabili
  int angolo;
  float radianti;

  // Inserimento variabile angolo + conversione e controllo valore 
  // compreso tra 0 e 360
  cout<<"Inserisci il valore dell'angolo (deve essere compreso tra 0 e 
   360):";
  cin>>angolo;
  if(angolo > 0 && angolo < 360)
  {
   radianti=(angolo*3,14)/180;
    cout<<"Il valore in radianti dell'angolo è:"<<radianti;
  }else
  {
    cout<<"Errore l'angolo non è compreso tra 0 e 360!";
  } 
   system("PAUSE");
   return 0;
   }

最佳答案

结果为零是因为您总是计算整数 14/180。这是由作恶的,操作符造成的,它只会计算后面的部分。 angolo*3 已计算(或未计算,经过优化),但之后运算符优先级导致使用 14。 使用 3.14 而不是 3,14 将解决此问题。

我建议也使用适当的符号,作为奖励可以获得更好的精度。
例如。 (一个例子,从哪里得到一个,其他的可以在下面的评论中找到):

#include <math.h>
/* ... */
radianti=(angolo*M_PI)/180;

请注意,严格来说,这不是绝对可移植的。
确保此功能由您的目标环境提供,然后才值得使用。否则使用 ..
我和你一样,习惯于使用小数点逗号而不是小数点。

关于c++ - 通过 3,14 从度数到弧度的角度转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46463721/

相关文章:

c++ - 动态和静态数组

c++ - 使用 '&'进行迭代时 'auto'符号有什么作用

c++ - 具有构造函数类型转换和转换运算符的转换序列

c++ - Asio 与持久性套接字的双向通信

c++ - 如何使用数组作为 map 值?

c++ - 相同类型之间的无效转换

c++ - 在 OpenGL 3.3 上使用texture2D

C++ 容器-如果为类型定义了运算符<<,则列出成员?

c++ - 如何通过 HTTPS POST 正确发送二进制数据?

c++ - 凯撒密码 : how to calculate with shifting value > 10 ( or larger )?