C ++ chrono:获得精度为3位小数的秒

时间:2016-11-20 15:28:34

标签: c++ chrono

这可能听起来像一个基本问题,但我搜索了很多。我想在bi2&中尝试时间配置文件功能调用需要以秒为单位记录时间,直到BitmapImage。例如C++3 decimal places。我正在尝试使用2.304 seconds这样做:

.791 seconds

以下是我得到的输出:

std::chrono

我确信auto start_time = std::chrono::system_clock::now(); DoSomeOperation(); std::chrono::duration<double> elapsed_time = std::chrono::system_clock::now() - start_time; double execution_time = elapsed_time.count(); std::cout << "execution_time = " << execution_time << std::endl; 只需要几个execution_time = 1.9e-05 execution_time = 2.1e-05 execution_time = 1.8e-05 execution_time = 1.7e-05 来完成&amp;我需要DoSomeOperation中的号码。我需要double中的数字才能在不同的计算中使用它。

如何将这个奇怪的milliseconds转换为seconds中的合理数字,以1.9e-05double为单位产生?

尝试here中的代码,我遇到了同样的问题。

2 个答案:

答案 0 :(得分:2)

要更改输出格式,请尝试std::fixedstd::setprecision

double execution_time = 0.01234;
std::cout << "execution_time = "
          << std::fixed << std::setprecision(3)
          << execution_time << std::endl;

如果您有几个需要输出执行时间的地方,可以将其转换为字符串然后重新使用:

double execution_time = 0.01234;
std::stringstream stream;
stream << std::fixed << std::setprecision(3) << execution_time;
std::string execution_time_as_string = stream.str();

std::cout << "execution_time = " << execution_time_as_string << std::endl;

答案 1 :(得分:1)

使用

cout.setf(ios::fixed,ios::floatfield);
cout.precision(3);
cout << MyDouble;