For tables or numbers in plots it best practice to only give significant figures. These python functions can do the job automatically given a value and its uncertainty.

from math import log10 

def getSignificantExponent(value):
  """
  Returns the significant exponent.
  """

  l = log10(value)
  if l > 0:
    significantFigures = 0
  elif abs(l) - int(abs(l)) == 0:
    significantFigures = int(abs(l))
  else:
    significantFigures = int(abs(l)) + 1
  return significantFigures


def reduceToSignificantFigure(value, error):
  """
  Round value and error to the significant figures
  """
  significantFigures = getSignificantExponent(error)
  return round(value, significantFigures), round(error,
      significantFigures)

Consequently, this produces the following outpurts

In [6]: reduceToSignificantFigure(.123456, .1 )
Out[6]: (0.1, 0.1)

In [7]: reduceToSignificantFigure(.423456, .1 )
Out[7]: (0.4, 0.1)

In [8]: reduceToSignificantFigure(.153456, .1 )
Out[8]: (0.2, 0.1)

In [9]: reduceToSignificantFigure(1.45E-3, 3E-5 )
Out[9]: (0.00145, 3e-05)

In [10]: reduceToSignificantFigure(1.45E-3, 3E-4 )
Out[10]: (0.0014, 0.0003)

And to get strings with the correct numers of zeros

def formatError(value, error):
  """
  return two formatted latex strings of form value, error with
  correct significant figures
  """
  value, error = reduceToSignificantFigure(value, error)
  significantFigures = getSignificantExponent(error)
  stringTemplate = '%%.%if' %(significantFigures)
  result =  stringTemplate % (value), stringTemplate % (error)
  return result

which produces

In [14]: print "%s +/- %s" % (formatError(1004.123456, 12.00100001 ))
1004 +/- 12

In [15]: print "%s +/- %s" % (formatError(.123456, .00100001 ))
0.123 +/- 0.001

The function is part of the matplotlibtools, a collection of helper functions and classes to work with matplotlib and numpy.