How can I modify the point at which python decides to print in scientific notation?
E.g. I'd like everything > 1e4
or < 1e-4
to be printed in scientific notation.
Good:
In [11]: 5e20
Out[11]: 5e+20
Bad:
In [12]: 5e10
Out[12]: 50000000000.0
In IPython you can use
this will print floating point values who's absolute value is < 1e-4 or >= 1e4 in scientific notation.
You can find more information about the
%precision
command in the IPython API Docs. For string formatting options have a look at the Python DocsActually it has nothing to do with IPython as it simply calls
__str__
. Sadly,float
, being a built-in type, is implemented in C and you can't monkeypatch C types. So your only options are modifying__str__
implementation in cpython or patching IPython to be smarter than just calling__str__
.