943,944 Members | Top Members by Rank

Ad:
  • C Discussion Thread
  • Unsolved
  • Views: 25030
  • C RSS
Jan 29th, 2005
1

Right Justified / decimal point alignment

Expand Post »
I have a column of floating point data that I need to right justify and align the decimal points. Help.

Data looks something like this.

30.768
1.345
.430
Similar Threads
Reputation Points: 11
Solved Threads: 0
Newbie Poster
dallin is offline Offline
14 posts
since Jan 2005
Jan 29th, 2005
0

Re: Right Justified / decimal point alignment

you could, for example, use printf or sprintf or its ilk. Take a look at the specifications for the strings. You can control right or left justification, leading zeros, number of digits after the decimals, etc.

If your output is using a proportional font, the spaces won't be as wide as the digits, so that can be a problem too; hopefully you will use a non-proportional font, or else you'll have to do placement in some measurement like pixels or inches.
Reputation Points: 36
Solved Threads: 11
Posting Pro in Training
Chainsaw is offline Offline
436 posts
since Jun 2004
Jan 29th, 2005
0

Re: Right Justified / decimal point alignment

I'm using visual studio C++ I've run across ios class manipulators like set precision, left, right -- haven't used them yet though, wondering if these are the best/simplest approach I should be using. I don't see leading zero manipulators? Any additional advise?






Quote originally posted by Chainsaw ...
you could, for example, use printf or sprintf or its ilk. Take a look at the specifications for the strings. You can control right or left justification, leading zeros, number of digits after the decimals, etc.

If your output is using a proportional font, the spaces won't be as wide as the digits, so that can be a problem too; hopefully you will use a non-proportional font, or else you'll have to do placement in some measurement like pixels or inches.
Reputation Points: 11
Solved Threads: 0
Newbie Poster
dallin is offline Offline
14 posts
since Jan 2005
Jan 30th, 2005
1

Re: Right Justified / decimal point alignment

When in doubt, use the old workhorse printf(). I have played around with manipulators like [php]cout << setfill('0') << setw(8) << d1;
[/php] with results that cause only consternation. The old printf() like Chainsaw mentioned works well:
[php]// right justified numeric output (Dev-C++)

#include <cstdlib>
#include <iostream> // may have to include stdio.h with VC++

using namespace std;

int main()
{
double d1 = 30.768;
double d2 = 1.345;
double d3 = .430;

printf("%8.3f\n",d1);
printf("%8.3f\n",d2);
printf("%8.3f\n\n",d3);

system("PAUSE");
return EXIT_SUCCESS;
}
[/php]
Moderator
Reputation Points: 1333
Solved Threads: 1403
DaniWeb's Hypocrite
vegaseat is offline Offline
5,792 posts
since Oct 2004
Jan 30th, 2005
0

Re: Right Justified / decimal point alignment

When challenged, think a little!!!!!!!!!! Yes you can line up your decimal points with std::cout ...
[php]// right justified numeric output (Dev-C++)

#include <cstdlib>
#include <iostream>
#include <iomanip> // setXXX() functions

using namespace std;

int main()
{
double d1 = 30.768;
double d2 = 1.345;
double d3 = .430;

// this works well, the decimal points line up
printf("%8.3f\n",d1);
printf("%8.3f\n",d2);
printf("%8.3f\n\n",d3);

// dito, but keep the order of setXXX() functions!!
cout << setiosflags(ios::right);
cout << setiosflags(ios::fixed);
cout << setw(8) << setprecision(3) << d1 << endl;
cout << setw(8) << setprecision(3) << d2 << endl;
cout << setw(8) << setprecision(3) << d3 << endl << endl;

system("PAUSE");
return EXIT_SUCCESS;
}
[/php]
Moderator
Reputation Points: 1333
Solved Threads: 1403
DaniWeb's Hypocrite
vegaseat is offline Offline
5,792 posts
since Oct 2004
Jan 30th, 2005
1

Re: Right Justified / decimal point alignment

@vegaseat:

It's not a good idea to rely on nonstandard extensions. You should include cstdio when using printf.
  1. #include <cstdio>
  2. #include <iomanip>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. double d1 = 30.768;
  10. double d2 = 1.345;
  11. double d3 = .430;
  12.  
  13. printf("%8.3f\n", d1);
  14. printf("%8.3f\n", d2);
  15. printf("%8.3f\n\n", d3);
  16.  
  17. cout.setf(ios::fixed);
  18. cout<< setw(8) << setprecision(3) << d1 <<endl;
  19. cout<< setw(8) << setprecision(3) << d2 <<endl;
  20. cout<< setw(8) << setprecision(3) << d3 <<endl;
  21. }
Reputation Points: 12
Solved Threads: 2
Light Poster
Siersan is offline Offline
45 posts
since Jan 2005
Jan 31st, 2005
0

Re: Right Justified / decimal point alignment

A friendly note to Siersan:

Spend some time with your editor to look at the iostream header. The one that comes with Dev-C++ leads you into a trail of internal includes to other header files which in turn include other header files and so on. Surprise, somewhere near the end is stdio.h so printf() is taken care off! Even cstdio simply includes stdio.h .....

You are right, to keep the notorius complainers of your back, it is better to include the obvious headers from the books! My oversight, I profoundly apologize!
Moderator
Reputation Points: 1333
Solved Threads: 1403
DaniWeb's Hypocrite
vegaseat is offline Offline
5,792 posts
since Oct 2004
Jan 31st, 2005
0

Re: Right Justified / decimal point alignment

>Spend some time with your editor to look at the iostream header.
Spend some time with the C++ standard. iostream isn't required to include cstdio or stdio.h, so your code exhibits undefined behavior.

>The one that comes with Dev-C++
Not everyone uses Dev-C++.
Administrator
Reputation Points: 6442
Solved Threads: 1393
Bad Cop
Narue is offline Offline
11,807 posts
since Sep 2004
Jan 31st, 2005
0

Re: Right Justified / decimal point alignment

Quote originally posted by Narue ...
>Spend some time with your editor to look at the iostream header.
Spend some time with the C++ standard. iostream isn't required to include cstdio or stdio.h, so your code exhibits undefined behavior.

>The one that comes with Dev-C++
Not everyone uses Dev-C++.
You are right, to keep the notorius complainers of your back, it is better to include the obvious headers from the books! My oversight, I profoundly apologize!
Moderator
Reputation Points: 1333
Solved Threads: 1403
DaniWeb's Hypocrite
vegaseat is offline Offline
5,792 posts
since Oct 2004

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C Forum Timeline: input data from a file into an Array
Next Thread in C Forum Timeline: abs() function operator





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC