#include <iostream>
#include <cmath>
double buf[128 * 1024];
int main()
{
int i = 0;
unsigned long long n; // 64-bit unsigned integer
while (std::cin>>n) {
buf[i ++] = double(sqrt(n)); // store in buffer
}
i--;
while(i>=0){
printf("%lf\n",buf[i]); // When i am using this it works fine.
//std::cout<<buf[i]<<std::endl; // When i am using this line instead of printf function it shows wrong answer. why?
i--;
}
return 0;
}
我已经用G ++编译了它。 当我尝试使用 printf 功能打印输出时,它被接受。。但是当我使用 cout 函数时,它会给出错误的答案。为什么会这样呢? 当我在GCC7.1中进行编译时,此代码显示编译错误。这是什么原因呢? 问题链接:https://acm.timus.ru/problem.aspx?space=1&num=1001
答案 0 :(得分:2)
默认情况下,将<<
的{{1}}运算符四舍五入为6个有效数字,并对大浮点数使用科学计数法。要禁用科学计数法,请包含std::cout
标头并使用<iomanip>
。使用std::cout << std::fixed << buf[i];
还将舍入到小数点后 的6位数字。