If the mode of a float type column is <= 1e-5 or >= 1e16, this line in get_decimal_precisions fails as the string representation of the mode uses scientific notation and doesn't contain a decimal point:
  
  
    
        
          |  | maxp = len(str(modes[0]).split('.')[1])  # maxp stores the maximum precision of the modes |