Dziwny błąd w prostym kodzie

0

Ledwo zacząłem moją przygodę z programowanie a już mnie natknął niezrozumiały dla mnie błąd, po wciśnięciu 14 razy enter wyskakuje za duża liczba a po wciśnięciu 15 raz enter działa i tak co jakiś czas

   #include <iostream>

using namespace std;
float x, y, z, v;
int main()
{
x=0.01;
z=0;
 for (float i=0;;i+=0.01)
 {
  y=x*14;
  z=z+x;
  v=y-z;

  if (v<0)
        x=x+0.01;

    cout<<x<<endl;  
    cout<<y<<endl;  
    cout<<v<<endl;  
    cout<<z<<endl;  
    getchar();
    }
    return 0;
}
1

Co to za pomysł indeksować pętlę floatami?

2

Liczby binarne bardzo nie lubią ułamków okresowych, a 0.1 i 0.01 takimi są. Twój problem polega na tym, że nie wiesz jak działają floaty.

0

U mnie działa:

#include <iostream>

int main() {
    int x = 0;
    for (float i = 0; i < 1; i += 1.0 / 9.0) {
        x += 1;
    }
    std::cout << x;
}

Poprawnie wypisuje 9.

1 użytkowników online, w tym zalogowanych: 0, gości: 1