Solved

[noob][c++]  cout + float + precision

Posted on 2007-11-16
10
3,344 Views
Last Modified: 2012-06-21
I am trying to do this



#include <iostream>
#include <iomanip>

//
// if I can adjust the float things then it can be used
//


using namespace std;

int main()
{
      float date;
      date = 12003932;
      cout << setprecision ( 11 ) << date << endl;
      cout << date << endl;
      cout << (date/10000) << endl;
      date = ((date/10000) + 1 ) * 10000;
      
      cout << date << endl;
      
      return 0;
      
}




this is the output




12003932
12003932
1200.3931885
12013932




for some reason this pops up


1200.3931885


when it shouldn't.


how do I fix it?
0
Comment
Question by:Troudeloup
  • 4
  • 4
  • 2
10 Comments
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 250 total points
Comment Utility
floating numbers are not stored as decimals, indeed them are stored in inverse of the powers of 2, as explained here:
http://en.wikipedia.org/wiki/IEEE_754

So unless you control the display precision by yourself you will have thos unexpected result, try with:
cout << setprecision(4) << (date/10000) << endl;
     
0
 
LVL 84

Assisted Solution

by:ozo
ozo earned 250 total points
Comment Utility
setprecision ( 8 )
or what do you want to happen?
0
 

Author Comment

by:Troudeloup
Comment Utility
i just want cout to display the whole float exactly what they are.
0
 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 250 total points
Comment Utility
setprecision(4) will show "as you expected", but the number is really 1200.3931885
0
 
LVL 84

Assisted Solution

by:ozo
ozo earned 250 total points
Comment Utility
The exact value, depending on your float implementation, is probably something like
1200.3931884765625
With a double, you could increase the precision to
1200.39319999999997889972291886806488037109375
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 84

Assisted Solution

by:ozo
ozo earned 250 total points
Comment Utility
Or you could use int date, and get exactly
12003932
12003932
1200
12010000
0
 

Author Comment

by:Troudeloup
Comment Utility
ok,

float a;

a = 12002323;


cout << a << endl;

should say

1.2002323e7

and

cout << a/10000 << endl;

should say

1.2002323e3





does it work simply like that?


because if the number would change unexpectedly to something else...



0
 

Author Comment

by:Troudeloup
Comment Utility
i need to go into decimal values, so I think i can use only float
0
 
LVL 84

Assisted Solution

by:ozo
ozo earned 250 total points
Comment Utility
<< scientific << setprecision ( 8 )
0
 

Author Comment

by:Troudeloup
Comment Utility
nice.

can I display float like this


12003939

instead of


1.2003939


?
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

If you haven’t already, I encourage you to read the first article (http://www.experts-exchange.com/articles/18680/An-Introduction-to-R-Programming-and-R-Studio.html) in my series to gain a basic foundation of R and R Studio.  You will also find the …
This article will show, step by step, how to integrate R code into a R Sweave document
The viewer will learn how to implement Singleton Design Pattern in Java.
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now