将弧度转换为像谷歌一样的度数

时间:2012-03-07 02:19:47

标签: c++ math

我试图将弧度转换为度数,但我没有得到与谷歌相同的结果

计算器和Pi i定义剂量输出所有数字。

如果您输入谷歌搜索:(1 * 180)/ 3.14159265 ,那么您将获得 57.2957796 ,但我的计划

输出: 57.2958 如果您输入谷歌搜索Pi,您会得到: 3.14159265 ,但我的

剂量输出其余部分,输出: 3.14159

我的代码是:

#include <iostream>
#define SHOW(X) cout << # X " = " << (X) << endl

using namespace std;

double Pi_test = 3.14159265;

float radian_to_degree(double  ENTER) {
  double Pi = 3.14159265;
  float degrees = (ENTER * 180) / Pi;
  return degrees;
}

int main (int argc, char * const argv[]) {
    SHOW( radian_to_degree(1) ); // 57.2958 not 57.2957795 like google, why?
    SHOW( Pi_test ); // output 3.14159' not 3.14159265, why? 
    return 0;
}

请帮我解决这个问题,有什么不对?任何一个例子?

4 个答案:

答案 0 :(得分:8)

您需要更改默认精度:

cout.precision(15);
cout << d << endl;

答案 1 :(得分:1)

如上所述here,可能是C ++中的cout在显示之前将数字四舍五入。试试这个:

#define SHOW(X) cout << setprecision(some_number) << # X " = " << (X) << endl

答案 2 :(得分:1)

radian_to_degree更改为double而非float,因为double的精确度更高。

使用std::setprecision

输出结果
#include <iomanip>
std::cout << std::setprecision(9) << result << "\n";

答案 3 :(得分:0)

即使更改了cout的精度,请注意double只包含如此多的数据;如果你希望你的程序吐出1000个小数位,那么double不会给你那么多。您必须创建自己的数据类型。

此外,除非必须,否则不要定义宏功能。