я не об этом, функция к которой он прикопался округляет нормально, 0.09 = 0 а для 0.1 = 0.2 , если надо сдвинуть вправо или влево точку округления, то достаточно просто отнять или добавить небольшую поправку, как-то это метод продемонстрировал @ЕвгенийП и даже пояснил, сходу не найду (там это надо было однозначно делать иначе неправильно округлялось)
Так объясните какой именно, тут, похоже, никто не понимает, что Вас не устраивает.
Попробуйте составить табличку со всеми критичными случаями, типа такой:
На входе | Должно получиться |
---|---|
23,15 | 23,2 |
17,86 | 18 |
3,14 | 100500 |
Может, тогда станет понятнее, чего Вам нужно.
Если Вам нужно округлить до чётных десятых, то это делается просто:
inline double round02(const double fd) {
return static_cast<int>(fd * 5 + 0.5) / 5.0;
}
но, Вам-то нужно не это, Вам нужно, чтобы график красиво выглядел, а что для этого надо, Вы, похоже, толком не знаете.
Приношу извинения за пустопорожнюю тему. Всё-таки я “прирезал осетра” до целых. Всё равно на матрицу из четырёх 7219 десятые не лезут, а восемь модулей городить громоздко. Графичек теперь красивенький, но скучный. Динамики нет.
Я часто вывожу на дисплей рядом с измеряемой величиной скорость ее изменения за последнюю минуту например. Для температуры это значение в сантиградусах в минуту. От минус 99 до плюс 99, и всегда видно что происходит с динамикой по температуре.