我试图将弧度转换为度数,但我没有得到与谷歌相同的结果
计算器和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;
}
请帮我解决这个问题,有什么不对?任何一个例子?
答案 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
不会给你那么多。您必须创建自己的数据类型。
此外,除非必须,否则不要定义宏功能。