[英]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.