因此,我正在编写一个程序来计算一个函数的执行时间,使用时钟,我用iomanip将输出更改为带有9个零的十进制。
这是我正在使用的代码:
#include <time.h>
#include <iomanip>
using namespace std;
void linearFunction(int input)
{
for(int i = 0; i < input; i++)
{
}
}
void execution_time(int input)
{
clock_t start_time, end_time;
start_time = clock();
linearFunction(input);
end_time = clock();
double time_taken = double(end_time - start_time) / double(CLOCKS_PER_SEC);
cout << "Time taken by function for input = " << input << " is : " << fixed
<< time_taken << setprecision(9);
cout << " sec " << endl;
}
int main()
{
execution_time(10000);
execution_time(100000);
execution_time(1000000);
execution_time(10000000);
execution_time(100000000);
execution_time(1000000000);
return 0;
}输出结果显示:
Time taken by function for input = 10000 is : 0.000000 sec
Time taken by function for input = 100000 is : 0.001000000 sec
Time taken by function for input = 1000000 is : 0.002000000 sec
Time taken by function for input = 10000000 is : 0.038000000 sec
Time taken by function for input = 100000000 is : 0.316000000 sec
Time taken by function for input = 1000000000 is : 3.288000000 sec正如您所看到的,当我第一次调用这个函数时,它并不遵循我所写的set精度(9)。这是为什么,我如何解决这个问题?提前谢谢你。
发布于 2022-03-01 13:28:25
正确地查看以下一行:
cout << "Time taken by function for input = " << input << " is : " << fixed << time_taken << setprecision(9);看见?打印出time_taken后,您正在设置精度。因此,您第一次没有看到setprecision()的结果。但是第二次和以后,由于setprecision()已经被执行,您将获得所需的十进制位。
因此,要解决此问题,请将setprecision()移到time_taken之前,如下所示:
cout << "Time taken by function for input = " << input << " is : " << fixed << setprecision(9) << time_taken;..or您也可以这样做:
cout.precision(9);
cout << "Time taken by function for input = " << input << " is : " << fixed << time_taken;此外,考虑不要在代码中使用以下行:
using namespace std;..as --这被认为是一种糟糕的做法。相反,每次像这样使用std:
std::cout.precision(9);
std::cout << "Time taken by function for input = " << input << " is : " << std::fixed << time_taken;有关这方面的更多信息,请访问why is "using namespace std" considered as a bad practice。
https://stackoverflow.com/questions/71308999
复制相似问题