Looking for QT function to round a variable (integer) of type qint64 to the nearest ten
I'm looking for a QT function to round a variable (integer) of type qint64 to the nearest ten.
For example: 1013 would round to 1010. 1019 would round to 1020
QT Assistant doesn't seem to list any built in functions that would do this, but I could be looking in the wrong spot.
Any help would be appreciated.
Thanks, 开发者_如何学编程Wes
You may try this old trick for positive numbers, replace + with - for negative:
i_rounded = 10 * ((i + 5) / 10);
The normal way to do this with integer (truncating) math is 10*((n+5)/10)
. That is for a positive number, of course.
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
For negative, add negative 5. So the formula is really …+sign(n)*5
where sign returns -1, 0, or 1 depending on the sign of the number.
I'm not a very familiar with QT but what about
round(value/10)*10
does it work?
p.s: if value is integer, it may need to be converted to double before division.
精彩评论