Advertisement
Guest User

Python float insanity

a guest
Aug 9th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.55 KB | None | 0 0
  1. import re
  2.  
  3. EXPONENTIAL = re.compile(r'^([+-]?)([\d.]+)[eE]([+-]\d+)$')
  4. TRAILING_ZEROS = re.compile(r'\.0*$')
  5. def to_str(f):
  6. s = str(f)
  7. m = EXPONENTIAL.match(s)
  8. if not m:
  9. return s
  10.  
  11. sign = m.group(1)
  12. digits = m.group(2).replace('.', '')
  13. exponent = int(m.group(3))
  14.  
  15. if exponent < 0:
  16. digits = '0' * (-exponent) + digits
  17. exponent = 0
  18. else:
  19. digits = digits + '0' * exponent
  20.  
  21. rv = sign + digits[:exponent + 1] + '.' + digits[exponent + 1:]
  22. return TRAILING_ZEROS.sub('', rv)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement