The Python Oracle

How to suppress scientific notation when printing float values?

--------------------------------------------------
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------

Music by Eric Matyas
https://www.soundimage.org
Track title: Over a Mysterious Island Looping

--

Chapters
00:00 How To Suppress Scientific Notation When Printing Float Values?
00:25 Accepted Answer Score 81
00:46 Answer 2 Score 56
01:10 Answer 3 Score 186
01:50 Answer 4 Score 61
02:04 Thank you

--

Full question
https://stackoverflow.com/questions/6587...

--

Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...

--

Tags
#python #floatingpoint

#avk47



ANSWER 1

Score 186


Using the newer version ''.format (also remember to specify how many digit after the . you wish to display, this depends on how small is the floating number). See this example:

>>> a = -7.1855143557448603e-17
>>> '{:f}'.format(a)
'-0.000000'

as shown above, default is 6 digits! This is not helpful for our case example, so instead we could use something like this:

>>> '{:.20f}'.format(a)
'-0.00000000000000007186'

Update

Starting in Python 3.6, this can be simplified with the new formatted string literal, as follows:

>>> f'{a:.20f}'
'-0.00000000000000007186'



ACCEPTED ANSWER

Score 81


'%f' % (x/y)

but you need to manage precision yourself. e.g.,

'%f' % (1/10**8)

will display zeros only.
details are in the docs

Or for Python 3 the equivalent old formatting or the newer style formatting




ANSWER 3

Score 61


Another option, if you are using pandas and would like to suppress scientific notation for all floats, is to adjust the pandas options.

import pandas as pd
pd.options.display.float_format = '{:.2f}'.format



ANSWER 4

Score 56


With newer versions of Python (2.6 and later), you can use ''.format() to accomplish what @SilentGhost suggested:

'{0:f}'.format(x/y)

And since PEP-498 is over 8 years old, Python 3.6 and later supports:

f'{x/y:f}'

Someone commented on printing lists, so here's a bonus 1-liner:

[f'{x:f}' for x in long_list]