Я использую NS-3 (написанный на С++) для имитации сетевой среды.
Я использую его класс flowmonitor для записи показателей производительности беспроводной связи.
Одна вещь, которую я собираю, - это разница во времени между текущей и предыдущей задержкой пакета или «дрожанием».
Чтобы получить это, я вычитаю значение времени (преобразованное в двойную переменную) задержки одного пакета из предыдущего значения.
i.e
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;
}
Но так как я обнаружил ошибку, я попробовал прямое вычитание, но получил ту же ошибку.