title: Truncating Double to 2 decimal places?
body: <p>I know this question is repeated alot, but please have a look at the statement first than mark it already answered :)</p>
  
  <p>For truncating the double values 2 decimal places I use two ways which are mostly mentioned everywhere. They are given below</p>
  
  <pre><code>    //this one
      DecimalFormat dtime = new DecimalFormat("#.##"); 
      return Double.valueOf(dtime.format(val));
      //or the one below
      BigDecimal bd = new BigDecimal(val);
      BigDecimal rounded = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
      return rounded.doubleValue();
  </code></pre>
  
  <p>The problem is that for both the ways I mostly get correct rounded values in the dataset. But strangely at the same time I get values like 2.00000000000005 or 19.97999999999. </p>
  
  <p>The problem that I dont get is that why only a few values are not rounded of. What could be wrong?</p>