# _________________________________________________________________________ # # PyUtilib: A Python utility library. # Copyright (c) 2008 Sandia Corporation. # This software is distributed under the BSD License. # Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, # the U.S. Government retains certain rights in this software. # _________________________________________________________________________ def format_float(x, precision=None): """ Format float in a portable manner, standardizing the number of digits in the exponent. """ if not type(x) is float: raise TypeError("Argument " + str(x) + " is not a float") tmp = str(x) if not ("E" in tmp or "e" in tmp): return tmp if "+" in tmp: sign = "+" else: sign = "-" lst = tmp.split(sign) if lst[0] == "" and len(lst) >= 2: lst[1] = sign + lst[1] lst = lst[1:] if abs(x) <= 1e-100 or abs(x) >= 1e100: return tmp else: # # Use a 2-digit exponent # i = 0 while lst[1][i] == '0': i += 1 return lst[0] + sign + lst[1][i:] def format_io(x): """ Filter function for controlling the format of objects """ if type(x) is float: return format_float(x) return str(x)