[Tutor] Scientific Notation + 18 digit precision
Kent Johnson
kent37 at tds.net
Sun Nov 27 03:16:16 CET 2005
Hubert Fitch wrote:
> Now for the questions:
>
> Most data and results are displayed properly formatted in scientific
> notation, but sometimes large numbers resulting from calculations are
> not converted to scientific notation.
>
> For example: mu0*I0/r0 = 1209755258303.6067 (should have
> been 1.2097552583036067e+012).
>
> Is there an easy way to convert these large numbers to the scientific
> notation format? Can we write a function call that I could use
> to convert the numbers to scientific notation whenever I need to do so
> from the Python shell in direct mode?
You can use string formatting to get closer control of the way numbers print. For example:
>>> x= 1209755258303.6067
>>> x
1209755258303.6067
>>> '%e' % x
'1.209755e+012'
See the docs for details:
http://docs.python.org/lib/typesseq-strings.html
> And sometimes I get an incorrect result for integer calculations. This
> does not happen very often, but it worries me that it may happen when I
> don't know about it. A calculation involving integers will sometimes
> give an unexpected zero result.
Do you know that integer division is truncated? For example
>>> 3/4
0
You can fix this by making sure one of the operands is a float:
>>> 3.0 / 4
0.75
Future versions of Python will do this for you. You can enable it by this import:
>>> from __future__ import division
>>> 3/4
0.75
Kent
--
http://www.kentsjohnson.com
More information about the Tutor
mailing list