如何控制std::chrono::local_time输出到C++流的显示精度?
控制C++ chrono本地时间输出的小数精度
有两种简洁的方式可以实现你想要的3位小数精度输出:
1. 对时间点进行精度四舍五入
通过std::chrono::round将系统时间四舍五入到毫秒级(对应3位小数的秒),再转换为本地时间输出:
#include <chrono> #include <iostream> int main() { auto now = std::chrono::system_clock::now(); // 四舍五入到毫秒精度 auto rounded_time = std::chrono::round<std::chrono::milliseconds>(now); auto local_time = std::chrono::current_zone()->to_local(rounded_time); std::cout << local_time << '\n'; }
输出结果会自动保留3位小数,完全符合你的需求。
2. 直接指定格式化输出(C++20+)
利用std::format自定义输出格式,精准控制秒的小数位数:
#include <chrono> #include <iostream> #include <format> int main() { auto local_time = std::chrono::current_zone()->to_local(std::chrono::system_clock::now()); // 格式字符串中%.3f表示秒的小数部分保留3位 std::cout << std::format("{:%Y-%m-%d %H:%M:%.3f}", local_time) << '\n'; }
这种方式更灵活,你可以修改%.3f中的数字调整小数位数,比如改成%.2f就保留2位小数。
注意事项
以上两种方法都需要C++20或更高版本的标准支持,编译时需开启对应标准(例如GCC编译时添加-std=c++20参数)。
内容的提问来源于stack exchange,提问作者ThreeStarProgrammer57
相关产品推荐
相关产品推荐

