繁体   English   中英

Systemc-将sc_time舍入到最接近的第10个SC_NS

[英]Systemc - Rounding off sc_time to nearest 10th SC_NS

我正在尝试将sc_time舍入到最接近的10纳秒。 /是重载的,因此可以将两个sc_time *还使用sc_timedouble值重载。 对于此代码,我得到6而不是10

#include <iostream>
#include "systemc.h"

SC_MODULE(X)
{
    SC_CTOR(X)
    {
        SC_THREAD(a);

    }
    void a()
    {   
    sc_time t(6, SC_NS);
    sc_time t1(10, SC_NS);
    double v = (t / t1) *10;
    std::cout << "sc_time update:/ " << v << "\n";


    }
};

int sc_main( int , char* [] )
{
    sc_clock clock;
    X x("x");

    sc_start(1000, SC_NS);

    cout << "Program completed" << endl;
    return 0;
} 

快速浏览一下sc_time标头https://github.com/systemc/systemc-2.3/blob/master/src/sysc/kernel/sc_time.h表示它使用双精度进行数学sc_time ,因此sc_time 6/10*10==6并不奇怪6/10*10==6您需要添加一个明确的回合:

double v = round(t / t1) *10;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM