簡體   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