Problème de calcul de pourcentage

Salut tout le monde,

Je rencontre un soucis que je ne comprends pas.

J'ai essayé de m'afficher toutes mes valeurs qui sont prises en compte dans mon calcul mais je comprends.

Il faut changer la valeur de la variable pipeSelector.

Pour certains diamètres le pourcentage passe de positif à négatif etc etc
Et si vous essayé avce le pipeSelector à 0 pas de problème.

Quelqu'un peut me dire ou j'ai fait une erreur. MErci !!!!

const float pipeLenght = 1000; // Longueur du tuyau de travail (mm)
const float pipeMargin = 100;  // Marge d'un côté du tube (mm);
float distanceEachCut = 8.6;      // Distance entre chaque coup de lame sur une face (mm)

const int stepForComplete = 200;

int pipeDiameter[10] = {50, 63, 80, 90, 100, 110, 125, 140, 160, 200};
int pipeDistanceX[10] = {25, 30, 35, 40, 45, 50, 55, 60, 65, 70};
int pipeNbDrilling[10] = {3, 4, 4, 5, 5, 6, 6, 7, 8, 8};
int pipeSelector = 0;

void setup()
{
    Serial.begin(9600);

  pipeSelector = 7; //changer cette valeur entre 0 et 9

  boolean isStarted = false;

  float temp_ecoule = millis();

  int cntActions = 0;

  float countMovementX = trunc((pipeLenght - pipeMargin * 2) / distanceEachCut);

  for (int i = 1; i <= pipeNbDrilling[pipeSelector]; i++)
  {
    for (int j = 1; j <= countMovementX + 1; j++)
    {
      if (isStarted == false)
      {
          //Je fais des actions
        isStarted = true;
      }
      if (j != countMovementX + 1)
      {
        cntActions++;
      }
      Serial.println(cntActions * 100 / ((countMovementX) * pipeNbDrilling[pipeSelector]));
      Serial.println();

    }
    if (i != pipeNbDrilling[pipeSelector])
    {
      cntActions++;
    }
  }


  Serial.println(millis() - temp_ecoule);
}


void loop()
{

}

Si les calculs sont fait avec des entiers int alors la valeur max sur Uno ou similaire est faible (32767 ensuite on va en négatif) et la division est entière (3/4 c’est 0 pas 0.75)

Je le savais que c’était quelques chose de bête !!!

Je vais essayé ce soir mais je pense que c’est effectivement ça.

Merci à toi

Bonne journée!

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.