我正在使用NS-3(用C++编写)来模拟网络环境。比较NS-3中的两个双精度值时奇怪的数学错误C++
我正在使用其flowmonitor类来记录无线链接的性能指标。
我正在收集的一件事是当前和以前的数据包延迟或“抖动”之间的时间差异。
为了得到这个,我将一个数据包延迟的时间值(转换为双变量)减去前一个数值。
即
0.0159051 - 0.0158002 = 0.0001049
然而,经过一段时间的数学似乎行事很奇怪,如:
0.0159003 - 0.0158007 = 9.95972e-05
时答案显然应该是0.0000996
为了进一步阐述,我最初使用diff函数来找出差异。
template <typename T1, typename T2>
double diff(const T1& lhs, const T2& rhs)
{
std::cout << lhs << " - " << rhs << std::endl;
return lhs - rhs;
}
但是,由于我发现了错误,我尝试了直接减法,但是我得到了同样的错误。
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – knivil