title: double or float datatype doesn't addup properly in a loop?
body: <p>In a loop I am adding 0.10 till I reach the desired #, and getting the index. This is my code :</p>
  
  <pre><code>    private static int getIndexOfUnits(float units) {
      int index = -1;
      float addup = 0.10f;
      for(float i = 1.00f; i &lt; units; i=(float)i+addup) {
          index++;
          System.out.println("I = " + i + " Index = " + index);
      }
  
      return index;
  }
  </code></pre>
  
  <p>If the units passed is 5.7, the ourput I see is :</p>
  
  <pre><code>I = 1.0 Index = 0
  I = 1.1 Index = 1
  I = 1.2 Index = 2
  I = 1.3000001 Index = 3
  I = 1.4000001 Index = 4
  I = 1.5000001 Index = 5
  I = 1.6000001 Index = 6
  I = 1.7000002 Index = 7
  I = 1.8000002 Index = 8
  I = 1.9000002 Index = 9
  I = 2.0000002 Index = 10
  I = 2.1000001 Index = 11
  I = 2.2 Index = 12
  I = 2.3 Index = 13
  I = 2.3999999 Index = 14
  I = 2.4999998 Index = 15
  I = 2.5999997 Index = 16
  I = 2.6999996 Index = 17
  I = 2.7999995 Index = 18
  I = 2.8999994 Index = 19
  I = 2.9999993 Index = 20
  I = 3.0999992 Index = 21
  I = 3.199999 Index = 22
  I = 3.299999 Index = 23
  I = 3.399999 Index = 24
  I = 3.4999988 Index = 25
  I = 3.5999987 Index = 26
  I = 3.6999986 Index = 27
  I = 3.7999985 Index = 28
  I = 3.8999984 Index = 29
  I = 3.9999983 Index = 30
  I = 4.0999985 Index = 31
  I = 4.1999984 Index = 32
  I = 4.2999983 Index = 33
  I = 4.399998 Index = 34
  I = 4.499998 Index = 35
  I = 4.599998 Index = 36
  I = 4.699998 Index = 37
  I = 4.799998 Index = 38
  I = 4.8999977 Index = 39
  I = 4.9999976 Index = 40
  I = 5.0999975 Index = 41
  I = 5.1999974 Index = 42
  I = 5.2999973 Index = 43
  I = 5.399997 Index = 44
  I = 5.499997 Index = 45
  I = 5.599997 Index = 46
  I = 5.699997 Index = 47
  </code></pre>
  
  <p>If the units is big number like 18.90 or 29.90, it gives wrong index. Index is normally 1 less then it should be. Initial only 0.10 was added but after 2.3, it gets 2.39999.... on adding 0.10 to it. I believe this is a matter of precision. How to handle it and make sure that I get the right index on big #'s also regardless of using float or double. </p>
  
  <p>Any ideas !!!!</p>