Поиск функции QT для округления переменной (целого числа) типа qint64 до ближайшей десятки - PullRequest
1 голос
/ 06 октября 2011

Я ищу функцию QT для округления переменной (целого числа) типа qint64 до ближайшей десятки.

Например: 1013 будет округлять до 1010. 1019 округляется до 1020

QT Assistant, похоже, не перечисляет никаких встроенных функций, которые могли бы сделать это, но я мог бы искать не в том месте.

Любая помощь будет оценена.

Спасибо, Уэс

Ответы [ 3 ]

7 голосов
/ 06 октября 2011

Вы можете попробовать этот старый трюк для положительных чисел, замените + на - для отрицательных:

i_rounded = 10 * ((i + 5) / 10);
1 голос
/ 06 октября 2011

Обычный способ сделать это с помощью целочисленной (усеченной) математики - 10*((n+5)/10). Это для положительного числа, конечно.

n = 17:
17 + 5 = 22
22 / 10 = 2    // integer math truncates
2 * 10 = 20

n = 12:
12 + 5 = 17
17 / 10 = 1
1 * 10 = 10

Для отрицательного числа добавьте отрицательное 5. Итак, формула действительно …+sign(n)*5, где знак возвращает -1, 0 или 1 в зависимости от знака числа.

0 голосов
/ 06 октября 2011

Я не очень хорошо знаком с QT, но как насчет

round(value/10)*10

, он работает?

ps: если значение целое, его может потребоваться преобразовать в double перед тем, какразделение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...