Résultat division

Bonjour

Je ne comprends pas pourquoi dans la case 3 le résultat de ma division me donne 1 au lieu de 1.5 alors que j ai remplacé mes variables int par des float

unsigned char operation = 3;
float x = 15;
float y = 10;

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

void loop()
{
    //le paramètre "opération" donne le type d'opération à faire
    maFonction(x, y, operation);
}

int maFonction(int param1, int param2, int param3)
{
    float resultat = 0;
    switch(param3)
    {
    case 0 : //addition, resultat = 15
        resultat = param1 + param2;
         Serial.println(resultat);
        break;
    case 1 : //soustraction, resultat = -5
        resultat = param1 - param2;
         Serial.println(resultat);
        break;
    case 2 : //multiplication, resultat = 50
        resultat = param1 * param2;
         Serial.println(resultat);
        break;
    case 3 : //division, resultat = 0 (car nombre entier)
        resultat = param1 / param2;
         Serial.println(resultat);
        break;
    default :
        resultat = 0;
        break;
    }
    delay(1000);
    return resultat;
    
}

cordialement chris

Bonjour,

Parce que ta fonction retourne un entier.

oui faut faire

float maFonction(float param1,float param2, float param3)

ou

float maFonction( param1, param2, param3)

c'est mieux de déclarer ta fonction au dessus du loop,

Merci Hazerty

je fais bine comme tu indiques hazerty mais j ai un message d erreur en compilant

Arduino : 1.7.10 (Windows 7), Carte : "Arduino Uno"

sketch_jan02b.ino: In function 'float maFonction(float, float, float)':

sketch_jan02b.ino:19:18: error: switch quantity not an integer

Erreur lors de la compilation.

Ce rapport contiendrait plus d'informations si l'option
"Montrer les informations de sortie pendant la compilation"
était activée dans Fichier > Préférences.

Le param3 doit rester un entier car il est utiliser pour indexer le switch.

Cordialement.

Pierre