Re: Printing numbers

*To*: mathgroup at smc.vnet.net*Subject*: [mg54540] Re: Printing numbers*From*: "Matthew McMahon" <matthew.mcmahon at vanderbilt.edu>*Date*: Tue, 22 Feb 2005 04:24:39 -0500 (EST)*Organization*: Vanderbilt University usenet news server*References*: <cvc887$qsa$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

I believe I can explain the 7, at least. Try just evaluating each number alone; for the first case, the output is 123.457, which is 7 chars. This works up to 123456.789; you'll get the same output in each case. For 1234567.89, it converts to scientific notation. If you evaluate StringForm[ToString[1234567.89]], it takes two lines and ~ 20 chars. That's my best guess. The toString command tries to evaluate the expression before converting to a string. "Steve Gray" <stevebg at adelphia.net> wrote in message news:cvc887$qsa$1 at smc.vnet.net... > 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 > >