• C

math calculations

i am having trouble getting an int divide with another value and answer in 2 decimal places. here's the problem:
the user answered "05:04" as time so:
char ans[5]="05:04";
i need to convert the min=.04 to .07 of 60 mins (the fraction within the 60 min whole).
so the answer = "05.07"
now, i tried the following and it keeps giving me a 0 for an answer.  please help.
/*-------------------------*/
char ans[5]="05:04";
float value=0.0;
int h,m;

sscanf(ans,"%2d:%2d",&h,&m);
      value= h;
      if(m >=0 && m < 60)
            value= (value+(m/60));
/*----------------------------------------*/
the real problem is when i calculate (m/60), i get an answer of .0000000 instead of .066,  HOW DO I GET AN ANSWER WITH 2 DECIMAL PLACES?

zandy1
zandy1Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
sergelebelConnect With a Mentor Commented:
zandy1

M and H must also be a type float, well actually ony m really needs to be.

change sscanf(ans,"%2f:%2f",&h,&m);

Serge..
0
 
ozoCommented:
value += m/60.0;
0
 
viktornetCommented:
sergelebel, that's not the way you do it... here is how,,,

sscanf(ans,"%.2f:%.2f",&h,&m);

Hope this helps...

-Viktor
--Ivanov
0
 
ozoCommented:
to get an ANSWER with 2 decimal places, you could say
  printf("value=%.2f\n",value);

 
  sscanf(ans,"%.2f:%.2f",&h,&m);
is meaningless. (i.e.: "undefined behavior")

  int h,m; sscanf(ans,"%2f:%2f",&h,&m);
is also undefined.
To use sscanf(ans,"%2f:%2f",&h,&m) you would have to declare
  float h,m;

but
  int h,m; sscanf(ans,"%2d:%2d",&h,&m);
works fine, as long as you use (m/60.0) instead of (m/60)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.