我正在尝试解决 timus reverse root (1001) 问题并面临以下问题
I am trying to solve timus reverse root (1001) problem and facing the following problem
#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 中编译时,此代码显示编译错误。这是什么原因呢?
问题 Link:https://acm.timus.ru/problem.aspx?space=1&num=1001
将 <<
运算符与 std::cout
一起使用默认舍入到 6 有效数字 并对大浮点数使用科学记数法。要禁用科学记数法,请包含 <iomanip>
header 并使用 std::cout << std::fixed << buf[i];
。使用 std::fixed
也会将舍入设置为小数点后 6 位 .
#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 中编译时,此代码显示编译错误。这是什么原因呢? 问题 Link:https://acm.timus.ru/problem.aspx?space=1&num=1001
将 <<
运算符与 std::cout
一起使用默认舍入到 6 有效数字 并对大浮点数使用科学记数法。要禁用科学记数法,请包含 <iomanip>
header 并使用 std::cout << std::fixed << buf[i];
。使用 std::fixed
也会将舍入设置为小数点后 6 位 .