-
October 6th, 2009, 12:28 AM
#1
Another C++ problem
Sorry to keep posting my C++ programing problems but I'm still learning and have questions.
so here is my question I'm trying to take a float variable that is holding the amount of seconds it take for something to happen such as 1928.61582 seconds and break that down into minutes and seconds.
now transTime needs to be a float or i loose the decimal places rite from the beginning which is not good because my time will be off but my code will not work unless every thing is an int which doesn't work either because i need the time for seconds out to the 5th decimal place and if its an int and i force the decimal place i just get all zeros which isnt any good any way. hope you guys understand if not just ask more questions.
float transTime = 1928.61582 // total seconds that something takes to happen
int minSec = 60 // number of seconds in a minute
int minutes = 0
float seconds = 0
minutes = transTime / minSec; // gives me the minutes
seconds = transTime % minSec; // gives me the seconds
cout << "The ammount of time is: " << '\n' // print out time
<< fixed << showpoint << minutes << " minutes " << setprecision(5) << seconds << " seconds" << '\n';
-
October 6th, 2009, 10:53 AM
#2
Bear in mind I've not actually compiled and checked this, and that I haven't written any C++ for years, but I think what you're after is:
Code:
float transTime = 1928.61582 // total seconds that something takes to happen
int minSec = 60 // number of seconds in a minute
int minutes = 0
float seconds = 0
minutes = (int)(transTime / (float)minSec); // gives me the minutes
seconds = transTime % (float)minSec; // gives me the seconds
cout << "The ammount of time is: " << '\n' // print out time
<< fixed << showpoint << minutes << " minutes " << setprecision(5) << seconds << " seconds" << '\n';
What you have to do is explicitly cast minSec to a float to make sure that you don't lose the precision from the float before you've carried out the divide or mod operation. What you may also want to do is explicitly round up or down, but I'm not sure how to do this in C++.
I suspect declaring minSec as a float would have the same effect, and you wouldn't have to do the casts then.
Also, seconds has to be a float if you want to store the seconds to 5 decimal places. It isn't possible to store decimal or floating point values in an integer.
ac
Last edited by gothic_type; October 6th, 2009 at 10:55 AM.
-
October 6th, 2009, 11:29 PM
#3
hey thank you for your help but i figured out a solution.
I just added a var TMin to that dose nothing but hold the out out put of the minutes times minSec which gives me the amount of minutes in seconds then i just minus that from transTime which gives me the remaining seconds.
transTime = packetAmmount / transSpeed;
minutes = transTime / minSec;
TMin = minutes * minSec;
seconds = transTime - TMin;
thank you for your help.
Similar Threads
-
By The Texan in forum Operating Systems
Replies: 16
Last Post: June 22nd, 2006, 08:04 PM
-
By AngelicKnight in forum General Computer Discussions
Replies: 14
Last Post: June 15th, 2006, 04:04 AM
-
By Tedob1 in forum Tech Humor
Replies: 0
Last Post: December 23rd, 2002, 04:58 PM
-
By Rna in forum General Programming Questions
Replies: 4
Last Post: May 22nd, 2002, 07:03 AM
-
By thesecretfire in forum Hardware
Replies: 16
Last Post: May 17th, 2002, 12:31 AM
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
|