954,500 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

how to assigned comma and period in a thousand number?

how to assigned comma and period in thousand number?? (ex. 1,000.50) in c++..

this is my sample code...

#include <iostream>

main ()
{
      int x=0,y;
      
     cout<<"Coverting Dollar to Philippine Currency:";
     cout<<"\n\nEnter amount of dollar: $ ";
     cin>>y;
     x = y * 45.00;

     cout<<"Php "<<x;
     return 0;
}


i want to assigned comma in thousand number and period of decimal.
ex. Php 1,000.50

hoceandress
Newbie Poster
12 posts since Aug 2007
Reputation Points: 10
Solved Threads: 1
 
#include <iostream>
#include <locale>
#include <iomanip>
using namespace std ;

struct comma_facet : public std::numpunct<char>
{ protected: string do_grouping() const { return "\003" ; } };

int main()
{
  cout.imbue( locale( cout.getloc(), new comma_facet ) ) ;
  cout << fixed << setprecision(2) << showpoint << 123.0 << '\t'
       << 12345.6789 << '\t' << 2000.0/3.0 << '\t' << 1234567.1234 << '\n' ;
}
vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

i didn't get it!!!is there anything else that can easily to understand for beginners like me??

hoceandress
Newbie Poster
12 posts since Aug 2007
Reputation Points: 10
Solved Threads: 1
 
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
using namespace std;

int main()
{
   ostringstream stm ;
   stm << fixed << setprecision(2) << showpoint << 12345678.9876 ;
   string str = stm.str() ;
   int n = str.size() ;
   for( int i = n-6 ; i>0 ; i -= 3 ) str.insert( i, 1, ',' ) ;
   cout << str << '\n' ;
}
vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

std C/C++ numerical types don't recognize comma separaters. So, as vijayan has demostrated, you need to find a way to convert the numerical value to a string, then insert the commas and print out the string. There are other ways to do this basic sequence beyond what vijayan has demonstrated, but which way is best for you will depend on what tools you have in your tool chest. To better help us help you we need to know what tools you have available. Do you know about the different types of strings? If so which do you use? Do you know about manipulating arrays/vectors? Do you know about the Standard Template Library, etc. Did you know that main() returns an int in it's standard form? Did you know that you must somehow invoke namespace std when using cout with ith iostream header file? Do you know how to convert numerical values into strings?

Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 

To Lerner;

Do you know about the different types of strings?
- not really
If so which do you use? Do you know about manipulating arrays/vectors? - i know array a litle
the rest i don't know i am not sure..

hoceandress
Newbie Poster
12 posts since Aug 2007
Reputation Points: 10
Solved Threads: 1
 

All right. First things first.

It should always be int main(), not void main() or plain main(). void main() and plain old main() may work on some compilers, but it's not standard. See vijayan's examples.

If you are going to use the standard iostream header file instead of the (deprecated?) iostream.h header file then you need to inovke namespace std somehow. You can do that by including the line

using namespace std;

right after the list of includes. While this isn't the most sophisticated way to access material in namespace std, it's simple, straightforward, and good enough for most purposes, particularly for beginners. See vijayan's examples.

In the final analysis strings are null terminated char arrays. That means that there must be a null char in the char array just after the last char you want to visualize. This basic type string is often called a C style string because it's the only type string you can use in C. In C++ you can still use that style string, but C++ has a standard string class that can be used that does a lot of the grunt work for you that you have to do on your own if you use C style strings. Technically this string class is part to the Standard Template Library and is sometimes called an STL string or just a C++ string to differentiate it from a C style string. This string class has an embedded C style string in it as a data member and it can be accessed as such when you need to do so. This string class is in namespace std and can be accessed by including the string header file and using some technique to gain access to namespace std. (see vijayan's examples) There is a learning curve in terms of using either type string, but more and more people are recommended beginners in C++ learn how to use the C++ style strings right from the start.

To see how to use the C++ string class, see vijayan's example. If you aren't allowed to use this string class and must use the C style strings, then so be it.

In his second example, vijayan takes advantage of some of the methods available in the string class to insert the commas. In his first example he makes extensive use of features available in C++ that will likely cost you points if you submit such a method to an instructor in a beginners class.

To start with I'd suggest you write a program using standard code that creates a string, assigns the value 12345.67 to it and prints the string to the screen. Post it once you've got it completed and then someone can help you figure out how to insert comma's in it if you don't want to use vijayan's example.

Lerner
Nearly a Posting Maven
2,382 posts since Jul 2005
Reputation Points: 739
Solved Threads: 396
 

the brute force approach:

#include <iostream>
#include <cmath>
#include <cassert>
using namespace std;

void print_with_comma( double value )
{
  assert( value >= 0.0 ) ;
  double intp ;
  double fracp = modf( value,  &intp ) ;
  if( fracp >= 0.995 ) { fracp = 0.0 ; intp += 1.0 ; }
  int before_decimal = int( intp + 0.5 ) ;
  int millions = before_decimal / 1000000 ;
  int thousands = ( before_decimal / 1000 ) % 1000 ;
  int units = before_decimal % 1000 ;
  if( millions > 0 ) cout << millions << ',' ;
  if( millions>0 || thousands>0  ) cout << thousands << ',' ;
  cout << units << '.' ;
  cout.width(2) ;
  cout.fill('0') ;
  cout << int( fracp*100 + 0.5 ) << '\n' ;
}
vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

i'm using the standard header file!!the using namespace std;

hoceandress
Newbie Poster
12 posts since Aug 2007
Reputation Points: 10
Solved Threads: 1
 

>i'm using the standard header file!!the using namespace std;
Good for you?

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

fixed a couple of bugs (brute force version).

#include <iostream>
#include <cmath>
#include <cassert>
#include <iomanip>
using namespace std;

void print_with_comma( double value )
{
  assert( value >= 0.0 ) ;
  double intp ;
  double fracp = modf( value, & intp ) ;
  if( fracp >= 0.995 ) { fracp = 0.0 ; intp += 1.0 ; }
  int before_decimal = int( intp + 0.5 ) ;
  int millions = before_decimal / 1000000 ;
  int thousands = ( before_decimal / 1000 ) % 1000 ;
  int units = before_decimal % 1000 ;
  bool started = millions > 0 ;
  if(started) cout << millions << ',' ;
  if( started || thousands>0  )
  {
    cout << setw( started ? 3 : 0 ) << setfill('0') << thousands << ',' ;
    started = true ;
  }
  cout << setw( started ? 3 : 0 ) << setfill('0') << units << '.' ;
  cout << setw(2) << setfill('0') << int( fracp*100 + 0.5 ) << '\n' ;
}
vijayan121
Posting Virtuoso
1,606 posts since Dec 2006
Reputation Points: 1,159
Solved Threads: 287
 

im using old version of C++ i wold like to share i insert comma to separate the thousand,

# inclued
# include

main()
{
int thou;
float x,hund;

clrscr();

x=2456.23;

thou=x/1000;
hund=x-(thou*1000.00);
cout.precision(4);

cout<<"Php "<

ZirNes01
Newbie Poster
1 post since Dec 2010
Reputation Points: 9
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You