diff options
Diffstat (limited to 'src/ee/formatting')
-rw-r--r-- | src/ee/formatting/__init__.py | 47 |
1 files changed, 19 insertions, 28 deletions
diff --git a/src/ee/formatting/__init__.py b/src/ee/formatting/__init__.py index 3c592ef..a1e27a4 100644 --- a/src/ee/formatting/__init__.py +++ b/src/ee/formatting/__init__.py @@ -1,4 +1,3 @@ -#import sympy as sp import math from ee import EeError @@ -7,23 +6,15 @@ __all__ = [ 'eng_str', ] -#class Symbols(object): -# def __init__(self): -# self.tau = sp.symbols('tau'), -# self.r = sp.symbols('r'), -# self.c = sp.symbols('c') -# -#_s = Symbols() - class ESeries(object): - def __init__(self, series): - self.series = series + def __init__(self, series): + self.series = series - def closest(self, value): - e = math.floor(math.log10(value)) - value = float(value/(10**e)) + def closest(self, value): + e = math.floor(math.log10(value)) + value = float(value/(10**e)) - return min(self.series, key=lambda v: abs(v - value)) * 10**e + return min(self.series, key=lambda v: abs(v - value)) * 10**e # https://en.wikipedia.org/wiki/E-series_of_preferred_numbers _e_series_24 = [1.0, 1.1, 1.2, 1.3, 1.5, 1.6, 1.8, 2.0, 2.2, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.3, 4.7, 5.1, 5.6, 6.2, 6.8, 7.5, 8.2, 9.1] @@ -63,23 +54,23 @@ e96 = ESeries(_e_series_96) e192 = ESeries(_e_series_192) def e_series_find_closest(value): - e = math.floor(math.log10(value)) - value = float(value/(10**e)) + e = math.floor(math.log10(value)) + value = float(value/(10**e)) - return min(series, key=lambda v: abs(v - value)) * 10**e + return min(series, key=lambda v: abs(v - value)) * 10**e def eng_str(value): - big = ['', ' k', ' M', ' G', ' T'] - e_floor = math.floor(math.log10(value)) + big = ['', ' k', ' M', ' G', ' T'] + e_floor = math.floor(math.log10(value)) - div3 = int(math.floor(e_floor/3)) - suffix = big[div3] - scale = 10**(div3*3) - scaled = value/scale + div3 = int(math.floor(e_floor/3)) + suffix = big[div3] + scale = 10**(div3*3) + scaled = value/scale - if scaled == int(scaled): - return "{:1.0f}{}".format(scaled, suffix) - else: - return "{:1.1f}{}".format(scaled, suffix) + if scaled == int(scaled): + return "{:1.0f}{}".format(scaled, suffix) + else: + return "{:1.1f}{}".format(scaled, suffix) # return "scaled={:>9}, div3={}, floor(e)={}, scale={}, suffix={}".format(str(scaled), div3, e_floor, scale, suffix) |