float formatting
Peter Otten
__peter__ at web.de
Wed Jan 25 14:59:35 EST 2006
Brian wrote:
> I am a bit stuck with a float formatting issue. What I want to do is
> print a float to the screen with each line showing one more decimal
> place. Here is a code snip that may explain it better:
>
> #!/usr/bin/env python
>
> num1 = 32
> num2 = 42.98765
>
> for i in range(2,7):
> print "|" + "%10.3f" % num2 + "|"
>
> In the for loop, is the line with my difficulty. In a perfect world it
> would read something like this:
>
> for i in range(2,7):
> print "|" + "%10.if" % num2 + "|" #where i would be the iteration
> and the num of decimal places
>
> However, if I do that I get errors saying that all args were not
> converted during string formatting. An escaped 'i' does not work
> either.
In the http://en.wikipedia.org/wiki/Best_of_all_possible_worlds you have to
use a '*' instead of the 'i':
>>> for i in range(2, 7):
... print "|%10.*f|" % (i, 42.98765)
...
| 42.99|
| 42.988|
| 42.9877|
| 42.98765|
| 42.987650|
You can replace the width constant with a star, too:
>>> "|%*.*f|" % (10, 3, 1.23456)
'| 1.235|'
See http://docs.python.org/lib/typesseq-strings.html for the full story.
Peter
More information about the Python-list
mailing list