On Sun, Aug 28, 2016 at 6:44 PM, Ken Kundert <python-id...@shalmirane.com> wrote:
> When working with a general purpose programming language, the above numbers > become: > > 780kpc -> 7.8e+05 > 108MPa -> 1.08e+08 > 600TW -> 6e+14 > 3.2Gb -> 3.2e+09 > 53pm -> 5.3e-11 > $8G -> 8e+09 > These are not equal. 780kpc is a *number with units*. 7.8e+05 == 780000 is a *unitless number*. All the numbers on the right hand side above have no units so I can't tell which are pc or W or m or $. It's asking for trouble to go halfway in representing units. On the left hand side, 780kpc + 108MPa is invalid while 780kpc + 53pm is valid. On the right hand side, sums of any two numbers are valid as they would be with the unitless SI prefixes. So if you want to solve this problem, write a module that supports units. For example, m(780, 'kpc') == m('780kpc') == m(780, kpc) and it's legal to write m(780, kpc) + m(53, pm) but an exception gets raised if you write m(2, kW) + m(3, kh) instead of m(2, kW) * m(3, km) == m(6, MWh). In fact, several people have already done that. Here are three I found in < 1 minute of searching: https://pint.readthedocs.io/en/0.7.2/ https://pypi.python.org/pypi/units/ https://python-measurement.readthedocs.io/en/latest/ Should support for this ever get added to the core language? I doubt it. But if one of these modules becomes enormously popular and semi-standard, you never know. I think you're much more likely to get this into your Python code by way of a preprocessor. --- Bruce Check out my puzzle book and get it free here: http://J.mp/ingToConclusionsFree (available on iOS)
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/