c - Subtraction between static unsigned long variables -
i have problem subtraction between 2 static unsigned long variables.
my variables defined follows:
static unsigned long actual_value; static unsigned long incoming; static unsigned long outgoing; the operation in while cycle is:
actual_value = actual_value - (outgoing - incoming) / 1000; where "outgoing" > "incoming". problem actual_value doesn't alter @ each iteration. never modify value of "actual_value" in other point of while cycle, problem here.
in fact, if seek substituting equation with:
actual_value = actual_value - 1; correctly @ each iteration value decreases 1.
however, if alter with:
actual_value = actual_value - 0.1; again @ each iteration value decreases 1. think have not understand how static unsigned variables work.
where's problem?
thanks in advance.
based on response yo comment - outgoing - incoming less 1000, result of (outgoing - incoming) / 1000 0.
the solution depends on need. if want real value division, this:
( outgoing - incoming ) / 1000.0 which same as
( outgoing - incoming ) / 1000. then floating point number, between 0 , 1.
but want achieve? if ( outgoing - incoming ) < 1000 , not 0, code decrease value of actual_value 1, actual_value unsigned long. if , if outgoing - incoming 0, actual_value not changed. need?
based on comments below, need float or double type actual_value. , then, utilize actual_value -= ( outgoing - incoming ) / 1000.;
if want print nearest integer value actual_value, need
printf( "%ul\n", (unsigned long)( actual_value + .5 ) ); c
No comments:
Post a Comment