Easy engineering notation
Project description
![Travis CI Build Status](https://travis-ci.org/slightlynybbled/engineering_notation.svg?branch=master)
# Purpose
To easily work with human-readable engineering notation. I wrote this as a quick tool for my own use. I found that I was writing the same functionality into multiple packages and would like a quick pip-installable package to take care of this manipulation for me. The package should be easily extended for other use cases. The package is unit-less, so only operates on numeric values. Unit detection may be added in future versions.
# Installation
Install using pip: pip install engineering_notation.
# Status
This project currently has 100% test coverage. Have a look in test/test.py for examples of how to use this library.
# Use
There are multiple ways of initializing a number to a particular value, but a string is the preferred method:
` >>> from engineering_notation import EngNumber >>> EngNumber('10k') 10k >>> EngNumber('10000') 10k >>> EngNumber(10000) 10k >>> EngNumber(10000.0) 10k >>> EngNumber(1e4) 10k `
Where decimals are involved, we use a default precision of 2 digits:
` >>> EngNumber('4.99k') 4.99k >>> EngNumber('4.9k') 4.90k `
This behavior can truncate your results in some cases, and cause your number to round. To specify more or less digits, simply specify the precision in the declaration:
` >>> EngNumber('4.999k') 5k >>> EngNumber('4.999k', precision=3) 4.999k `
Most operations that you would perform on numeric values are valid, although all operations are not implemented:
` >>> EngNumber('2.2k') * 2 4.40k >>> 2 * EngNumber('2.2k') 4.40k >>> EngNumber(1.2) > EngNumber('3.3k') False >>> EngNumber(1.2) <= EngNumber('3.3k') True >>> EngNumber('3.3k') == EngNumber(3300) True `
All of the above operations are also possible on the EngUnit() class as well. The only difference is that units must match for addition/subtraction/comparison operations. Although multiplication and division operations will work numerically, they may not always be strictly correct. This is because EngUnit is not intended to replace a computer algebra system!
` >>> EngUnit('2s') / EngUnit('4rotations') 0.5s/rotations `
Additionally, since there are ‘reserved’ letters for sizing the number, you must be careful with your units!
` >>> EngUnit('2mm') 2mm # <<< this value equivalent to "0.002m" >>> EngUnit('2meter') 2meter # <<< this value is equivalent to "0.002eter", the "m" was used to scale the unit! `
# Contributions
Contributions are welcome. Feel free to make feature requests in the issues.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for engineering_notation-0.2.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bbc7c2e54f430e53776767a32dc7eaa432e5cc7b59518270ad46a209127eaf7b |
|
MD5 | 4896549ea57b7c330dd04f18da662580 |
|
BLAKE2b-256 | 3eab5c140857e31cbb89b4c4b0ab9c72f40f94289c31684115686b0c37573f96 |