Serial.print() gives wrong value (0.00) when rounding 0.995 through 0.999

My Arduino101 is giving incorrect values in Serial.print() using Serial Monitor when the value between parentheses is a float value from 0.995 to 0.999; the result should be 1.00, but the displayed value is 0.00. The following code and output show what's going on:

Sketch:

float fraction, scaled, x100value;
int count=0;

void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
}

void loop() {
  while(count<1){
    delay(5000);
    for(int i=990; i<=1000; i++){
      Serial.print("i = ");
      Serial.print(i);
      Serial.print("\t  "); 
      fraction = float(i)/1000;
      Serial.print(fraction);
      Serial.print("\t  ");
      x100value = 100*fraction;
      Serial.println(x100value);
      delay(1); 
      }
    count++;
    Serial.println(0.993);
    Serial.println(0.994);
    Serial.println(0.995);
    Serial.println(0.996);
    Serial.println(0.997);
    Serial.println(0.998);
    Serial.println(0.999);
  }
}

Gives the output (errant output values highlighted in bold:

i = 990	  0.99	  99.00
i = 991	  0.99	  99.10
i = 992	  0.99	  99.20
i = 993	  0.99	  99.30
i = 994	  0.99	  99.40
i = 995	  [b]0.00	  [/b]99.50
i = 996	  [b]0.00	  [/b]99.60
i = 997	  [b]0.00	  [/b]99.70
i = 998	  [b]0.00	  [/b]99.80
i = 999	  [b]0.00	  [/b]99.90
i = 1000	  1.00	  100.00
0.99
0.99
[b]0.00
0.00
0.00
0.00
0.00[/b]

I've looked for any documentation of this, but couldn't find any. Has anyone else run into this? By the way, it does not happen with my Mega 2560, Arduino Uno, or Uno clone.

I've found that this issue has already been addressed but the fix has not yet been released: