MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Printing numbers

  • To: mathgroup at smc.vnet.net
  • Subject: [mg54511] Re: [mg54483] Printing numbers
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Tue, 22 Feb 2005 04:23:11 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

>-----Original Message-----
>From: Steve Gray [mailto:stevebg at adelphia.net] 
To: mathgroup at smc.vnet.net
>Sent: Monday, February 21, 2005 9:45 AM
>To: mathgroup at smc.vnet.net
>Subject: [mg54511] [mg54483] Printing numbers
>
>1. Can anyone tell me why these results are what they are? 
>Neither answer is what I would expect, which is 10. The two 
>strings are the same length.
>
>Print[StringLength[ToString[123.456789]], "   ",
>        StringLength[ToString[1234567.89]]];
>7    22
>
>2. Is there a simple, easily available or self-evident way to 
>get numbers printed out such that the total  number of spaces 
>occupied by the print before the decimal point is some fixed, 
>user-specified amount, the number of spaces occupied after the 
>decimal point is a different user-specified amount, and the 
>number of spaces following the number is a third 
>user-specified amount. The goal is to easily produce aligned 
>columns of numerical printing, which would seem to be the most 
>trivial task in neat number printing.
>	For example if the function is called fprint, 
>fprint[345.678,4,5,6] would print 4 spaces followed by 5 
>character positions to the left of the point (00345 or (2 
>spaces)" 345", specified by another argument), and 6 to its 
>right. So fprint[345.678,4,5,6] would print (4 spaces)(2
>spaces)"345.678"(3 spaces), or if desired (4 spaces)(2 
>spaces)"345.678000"(no spaces), the total taking up 16 
>positions. Also fprint[-345.678,4,5,6] would print (4 
>spaces)(1 space)"-345.678"(3 spaces), also taking 16 
>positions, with the decimal points aligned with the first example.
>	Help is not that helpful, implying that I have to write 
>one or find it somewhere. As I recall, C provides an easy way 
>to do this by setting arguments to Print.
>	Leads would be appreciated.
>
>Steve Gray
>
>
>


Steve,

1. observe:

In[25]:=
ToString /@ {123.456789, 1234567.89} // FullForm
Out[25]//FullForm=
List["123.457", "          6\n1.23457 10"]

If you count, you'll find 7 and 22  ("\n" counts as one!)


2. For comparison with fprint check:

Print[">>", "   ", 
  AccountingForm[345.678, {11, 6}, NumberPadding -> {"0", " "}, 
    NumberSigns -> {"-", " "}, SignPadding -> True], "<<"]


Print[">>", "   ", 
  AccountingForm[-345.678, {11, 6}, NumberPadding -> {" ", "0"}, 
    NumberSigns -> {"-", " "}, SignPadding -> False], "<<"]


Print["   ", 
        PaddedForm[#, {20, 10}, NumberPadding -> {":", "."}, 
          NumberSigns -> {"-", ""}, SignPadding -> True, 
          ExponentFunction -> (Null &)]] & /@ {-123.456789, 1234567.89};


Also look up NumberForm, PaddedForm, etc. and their options.


--
Hartmut Wolf


  • Prev by Date: Re: Re: Re: Bug in 5.1??
  • Next by Date: Re: my mathematica no longer renders graphics, even after reinstall
  • Previous by thread: Re: Printing numbers
  • Next by thread: Re: Printing numbers