|
|
View previous topic :: View next topic |
Author |
Message |
emazzu630
Joined: 14 Aug 2018 Posts: 20 Location: Ouro Verde - SC
|
How to round the number to the nearest ten? |
Posted: Wed Feb 27, 2019 11:49 pm |
|
|
With the button pressed (AP == 0), counting from 1 to 1 is performed with
the "UP and DOWN" buttons.
With the release button, (AP == 1), the count of 5 to 5 is performed
through the "UP and DOWN" buttons.
The point is that if the count of 1 to 1 is between 0 and 5 or between 5
and 10, the count of "5 to 5" is wrong.
A rounding is required that at the first pressing of the "UP and DOWN"
buttons, only the unit number will
"0" or "5" following the count of 5 to 5.
I declare the library "math.h" and tried unsuccessfully the
"value = ceil();" and "value = floor ();".
In the code below, I got the correct sequence on the display only to
appear when the button is pressed, when I release the number outside
the "0, 5, or 10" sequence appears again.
Anyone who has the solution, would you like to share? Thank you very much.
Code: |
while((UP == 0)||(DOWN == 0)) {
if (UP == 0)
dados+=c;
else
dados-=c;
7_seg(dados);
d++;
if ((AP == 1) &&
((dig0 == 1)||(dig0 == 2)||(dig0 == 3)||(dig0 == 4)||
(dig0 == 6)||(dig0 == 7)||(dig0 == 8)||(dig0 == 9))) {
if ((dig0 == 1)||(dig0 == 2)||(dig0 == 3)||(dig0 == 4)) {
dig0 = 0; }
else {
dig0 = 5; }
}
|
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19529
|
|
Posted: Thu Feb 28, 2019 12:07 am |
|
|
What you are describing is 4/5 rounding. You do this with:
result=floor(val+4);
This gives 0 for 0,1,2,3,4, and then 5 for 5,6,7,8,9. Hence the '4/5'.
If you were working with floats, the formula is:
result=floor(val+4.99999); |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|