Solved

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

Posted on 2007-11-16
10
3,360 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 4
  • 2
10 Comments
 
LVL 55

Accepted Solution

by:
Jaime Olivares earned 250 total points
ID: 20299471
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
ID: 20300857
setprecision ( 8 )
or what do you want to happen?
0
 

Author Comment

by:Troudeloup
ID: 20300873
i just want cout to display the whole float exactly what they are.
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 250 total points
ID: 20300901
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
ID: 20300925
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
 
LVL 84

Assisted Solution

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

Author Comment

by:Troudeloup
ID: 20300980
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
ID: 20300989
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
ID: 20301085
<< scientific << setprecision ( 8 )
0
 

Author Comment

by:Troudeloup
ID: 20301105
nice.

can I display float like this


12003939

instead of


1.2003939


?
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
fizzArray  challenge 1 115
data scientists and AI 17 154
Problem to open Excel file 15 266
Problem to Alipay 10 95
Navigation is an important part of web design from a usability perspective. But it is often a pain when it comes to a developer’s perspective. By navigation, it often means menuing. This is less theory and more practical of how to get a specific gro…
Windows Script Host (WSH) has been part of Windows since Windows NT4. Windows Script Host provides architecture for building dynamic scripts that consist of a core object model, scripting hosts, and scripting engines. The key components of Window…
This video teaches viewers about errors in exception handling.
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…

751 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