[英]Systemc - Rounding off sc_time to nearest 10th SC_NS
我正在嘗試將sc_time舍入到最接近的10納秒。 /
是重載的,因此可以將兩個sc_time
。 *
還使用sc_time
和double
值重載。 對於此代碼,我得到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.