title: Parsing numbers safely and locale-sensitively
body: <p>Java's <code>NumberFormat</code> is 1) non thread-safe (which can be worked around with a <code>ThreadLocal</code>); 2) <a href="http://www.ibm.com/developerworks/java/library/j-numberformat/index.html" rel="noreferrer">inconvenient to use correctly</a> for the simplest use case when I know whether the string should contain int, long, or double, and want an API like:</p>
  
  <pre><code>int parseInt(String str, Locale locale) throws ParseException; 
  int parseInt(String str, int defaultValue, Locale locale);
  long parseLong(String str, Locale locale) throws ParseException;
  long parseLong(String str, long defaultValue, Locale locale);
  double parseDouble(String str, Locale locale) throws ParseException;
  double parseDouble(String str, double defaultValue, Locale locale);
  </code></pre>
  
  <p>where the exception is thrown when the string isn't completely parsed. Obviously, such a wrapper is easy to write, but I couldn't find one in Guava or Apache Commons Lang. Did I just miss it? Or is there another more-or-less standard solution for this?</p>