Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #31295 > unrolled thread

Re: simple string format question

Started byAdrien <adnothing@gmail.com>
First post2012-10-15 14:58 +0200
Last post2012-10-25 12:49 +0000
Articles 3 — 3 participants

Back to article view | Back to comp.lang.python

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  Re: simple string format question Adrien <adnothing@gmail.com> - 2012-10-15 14:58 +0200
    Re: simple string format question Piet van Oostrum <piet@vanoostrum.org> - 2012-10-24 23:48 -0400
      Re: simple string format question Neil Cerutti <neilc@norwich.edu> - 2012-10-25 12:49 +0000

#31295 — Re: simple string format question

FromAdrien <adnothing@gmail.com>
Date2012-10-15 14:58 +0200
SubjectRe: simple string format question
Message-ID<mailman.2200.1350305892.27098.python-list@python.org>
Le 15/10/2012 14:12, Neal Becker a écrit :
> Is there a way to specify to format I want a floating point written with no more
> than e.g., 2 digits after the decimal?  I tried {:.2f}, but then I get all
> floats written with 2 digits, even if they are 0:
>
> 2.35 << yes, that's what I want
> 2.00 << no, I want just 2 or 2.

Maybe you're looking for "{:.3g}"

print "{:.3g}".format(2)
# '2'

print "{:.3g}".format(2.00)
# '2'

print "{:.3g}".format(2.35)
# '2.35'

print "{:.3g}".format(2.356)  # this rounds up
# '2.36'

Cheers,

-- Adrien

[toc] | [next] | [standalone]


#32086

FromPiet van Oostrum <piet@vanoostrum.org>
Date2012-10-24 23:48 -0400
Message-ID<m27gqfkya5.fsf@cochabamba.vanoostrum.org>
In reply to#31295
Adrien <adnothing@gmail.com> writes:

> print "{:.3g}".format(2.356)  # this rounds up

But:

>>> print "{:.3g}".format(12.356) 
12.4
>>> print "{:.3g}".format(123.356) 
123

-- 
Piet van Oostrum <piet@vanoostrum.org>
WWW: http://pietvanoostrum.com/
PGP key: [8DAE142BE17999C4]

[toc] | [prev] | [next] | [standalone]


#32122

FromNeil Cerutti <neilc@norwich.edu>
Date2012-10-25 12:49 +0000
Message-ID<aesqqgFlq7dU1@mid.individual.net>
In reply to#32086
On 2012-10-25, Piet van Oostrum <piet@vanoostrum.org> wrote:
> Adrien <adnothing@gmail.com> writes:
>
>> print "{:.3g}".format(2.356)  # this rounds up
>
> But:
>
>>>> print "{:.3g}".format(12.356) 
> 12.4
>>>> print "{:.3g}".format(123.356) 
> 123


  The precision is a decimal number indicating how many digits
  should be displayed after the decimal point for a floating
  point value formatted with 'f' and 'F', or before and after the
  decimal point for a floating point value formatted with 'g' or
  'G'. For non-number types the field indicates the maximum field
  size - in other words, how many characters will be used from
  the field content. The precision is not allowed for integer
  values.

So g will print a specific number of significant digits, so it
won't do what Adrien wants.

And f will print a fixed number of digits after the decimal
point, so it won't do want Adrien wants.

Adrien, you will need to do some post-processing on fixed point
output to remove trailing zeroes.

>>> print("{:.2f}".format(2.1).rstrip('0'))
2.1
>>> print("{:.2f}".format(2.127).rstrip('0'))
2.13

-- 
Neil Cerutti

[toc] | [prev] | [standalone]


Back to top | Article view | comp.lang.python


csiph-web