You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不同std::chrono duration类型之间实现转换?

std::chrono::nanoseconds 转换为 std::chrono::seconds 的方法

方法一:使用 std::chrono::duration_cast(推荐)

这是C++标准库提供的类型安全转换方式,专门用于不同chrono时长单位间的转换:

#include <chrono>
#include <iostream>

int main() {
    std::chrono::nanoseconds ns(1234567890); // 定义1.23456789秒的纳秒时长
    
    // 转换为整数型秒(自动截断小数部分)
    std::chrono::seconds sec = std::chrono::duration_cast<std::chrono::seconds>(ns);
    
    std::cout << sec.count() << " seconds" << std::endl; // 输出:1
    return 0;
}

补充:保留小数部分的转换

如果需要保留秒的小数部分,可以转换为浮点型的duration:

// 转换为浮点型秒
std::chrono::duration<double, std::ratio<1>> sec_float = ns;
std::cout << sec_float.count() << " seconds" << std::endl; // 输出:1.23457

方法二:手动计数值计算(不推荐)

也可以通过获取纳秒的计数值,除以1e9(秒与纳秒的换算系数)来构造秒时长,但这种方式缺乏类型安全,容易出错:

std::chrono::seconds sec(ns.count() / 1000000000);

注意:duration_cast 采用截断取整,而非四舍五入。如果需要四舍五入逻辑,需自行额外处理。

内容的提问来源于stack exchange,提问作者user19865469

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 12:12:24