[Python-ideas] SI scale factors in Python

Ken Kundert python-ideas at shalmirane.com
Thu Aug 25 14:02:11 EDT 2016


All,
    This proposal basically has two parts. One part is that Python should 
naturally support printing real numbers with SI scale factors.  Currently there 
are three formats for printing real number: %f, %d, %g. They all become 
difficult to read for even moderately large or small numbers.  Exponential 
notation is hard for humans to read. That is why SI scale factors have largely 
replaced exponential notation everywhere except in programming.  Adding another 
format for printing real numbers in human readable form seems like a modest 
extension that is long past due in all programming languages. I am asking that 
Python be the leader here. I am sure other languages will pick it up once it is 
implemented in Python.

The second part is the logical dual to the first: input. People should be able 
to enter numbers in Python using SI scale factors. This means as real literals, 
such as 2.4G, but it should also work with casting, float('2.4G').  Once you 
allow SI scale factors on numbers, the natural tendency is for people to want to 
add units, which is a good thing because it gives important information about 
the number. We should allow it because it improves the code by making it more 
self documenting. Even if the language completely ignores the units, we have 
still gained by allowing the units to be there, just like we gain when we allow 
user to add comments to their code even though the compiler ignores them.

Some people have suggested that we take the next step and use the units for 
dimensional analysis, but that is highly problematic because you cannot do 
dimensional analysis unless everything is specified with the correct units, and 
that can be a huge burden for the user. So instead, I am suggesting that we 
provide simple hooks that simply allow access to the units.  That way people can 
build dimensional analysis packages using the units if they felt the need.

-Ken


More information about the Python-ideas mailing list