Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

formatting a number as percentage

14 views
Skip to first unread message

vsoler

unread,
Feb 21, 2010, 12:53:45 PM2/21/10
to
I'm trying to print .7 as 70%
I've tried:

print format(.7,'%%')
.7.format('%%')

but neither works. I don't know what the syntax is...

Can you help?

Thank you

TomF

unread,
Feb 21, 2010, 1:11:19 PM2/21/10
to
On 2010-02-21 09:53:45 -0800, vsoler <vicent...@gmail.com> said:
> I'm trying to print .7 as 70%
> I've tried:
>
> print format(.7,'%%')
> .7.format('%%')
>
> but neither works. I don't know what the syntax is...

>>> print "Grade is {0:%}".format(.87)
Grade is 87.000000%

or if you want to suppress those trailing zeroes:

>>> print "Grade is {0:.0%}".format(.87)
Grade is 87%

Mark Dickinson

unread,
Feb 21, 2010, 1:15:18 PM2/21/10
to
On Feb 21, 5:53 pm, vsoler <vicente.so...@gmail.com> wrote:
> I'm trying to print .7 as 70%
> I've tried:
>
> print format(.7,'%%')
> .7.format('%%')
>
> but neither works. I don't know what the syntax is...

Assuming that you're using Python 2.6 (or Python 3.x):

>>> format(.7, '%')
'70.000000%'
>>> format(.7, '.2%')
'70.00%'

Or see TomF's response for how to use this with the str.format method.

--
Mark

vsoler

unread,
Feb 21, 2010, 1:17:18 PM2/21/10
to
On Feb 21, 7:11 pm, TomF <tomf.sess...@gmail.com> wrote:

> On 2010-02-21 09:53:45 -0800, vsoler <vicente.so...@gmail.com> said:
>
> > I'm trying to print .7 as 70%
> > I've tried:
>
> > print format(.7,'%%')
> > .7.format('%%')
>
> > but neither works. I don't know what the syntax is...
> >>> print "Grade is {0:%}".format(.87)
>
> Grade is 87.000000%
>
> or if you want to suppress those trailing zeroes:
>
> >>> print "Grade is {0:.0%}".format(.87)
>
> Grade is 87%

Excellent, works perfect!!!

Günther Dietrich

unread,
Feb 21, 2010, 1:18:05 PM2/21/10
to
vsoler <vicent...@gmail.com> wrote:

>I'm trying to print .7 as 70%
>I've tried:
>
>print format(.7,'%%')
>.7.format('%%')
>
>but neither works. I don't know what the syntax is...

Did you try this:

>>> print('%d%%' % (0.7 * 100))
70%

Best regards,

Günther

Hans Mulder

unread,
Feb 22, 2010, 2:32:45 PM2/22/10
to

That method will always round down; TomF's method will round to
the nearest whole number:

>>> print "%d%%" % (0.698 * 100)
69%
>>> print "{0:.0%}".format(.698)
70%

Only the OP knows which one is more appropriate for his use case.

Hope this helps,

-- HansM

vsoler

unread,
Feb 23, 2010, 2:36:23 PM2/23/10
to
On Feb 22, 8:32 pm, Hans Mulder <han...@xs4all.nl> wrote:
> Günther Dietrich wrote:

Great!!!

Thank you

Günther Dietrich

unread,
Feb 23, 2010, 3:09:38 PM2/23/10
to
Hans Mulder <han...@xs4all.nl> wrote:

>> Did you try this:
>>
>>>>> print('%d%%' % (0.7 * 100))
>> 70%
>
>That method will always round down; TomF's method will round to
>the nearest whole number:
>
> >>> print "%d%%" % (0.698 * 100)
>69%
> >>> print "{0:.0%}".format(.698)
>70%

It was intended as a hint to this way of formatting. He could also try:

>>> print('%.0f%%' % (0.698 * 100))
70%

Best regards,

Günther

Lawrence D'Oliveiro

unread,
Feb 23, 2010, 9:03:51 PM2/23/10
to

> I'm trying to print .7 as 70%

Just to be perverse:

(lambda x : (lambda s : s[:s.index(".")] + s[s.index(".") + 1:] + "%")("%.2f" % x).lstrip("0"))(.7)

:)

0 new messages