Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Divide two integers in Arduino

Tags:

c++

arduino

I am trying to divide two integer values and store as a float.

void setup()
{
    lcd.begin(16, 2);

    int l1 = 5;
    int l2 = 15;
    float test = 0;
    test = (float)l1 / (float)l2;

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(test);
}

For some reason that I expect is fairly obvious I can't seem to store and display the correct value. 'test' variable is always set to 0.

How do I cast the integer values?

like image 606
jimmyjambles Avatar asked Jan 14 '23 19:01

jimmyjambles


1 Answers

It must be your LCD print routine, and thus the casts you have used are correct.

I tried it out on an Arduino using serial printing instead of an LCD. The expected result appears in the serial monitor (started by menu Tools -> Serial Monitor) for the complete code example below:

Start...

5
15
0.33
0.33333334922790

The last result line confirms it is a 4 byte float with 7-8 significant digits.

Complete code example

/********************************************************************************
 * Test out for Stack Overflow question "Divide two integers in Arduino",       *
 * <http://stackoverflow.com/questions/13792302/divide-two-integers-in-arduino> *
 *                                                                              *
 ********************************************************************************/

// The setup routine runs once when you press reset:
void setup() {
    // Initialize serial communication at 9600 bits per second:
    Serial.begin(9600);

    //The question part, modified for serial print instead of LCD.
    {
        int l1 = 5;
        int l2 = 15;
        float test = 0;
        test = (float)l1 / (float)l2;

        Serial.println("Start...");
        Serial.println("");
        Serial.println(l1);
        Serial.println(l2);
        Serial.println(test);
        Serial.println(test, 14);
    }

} //setup()

void loop()
{
}
like image 157
Peter Mortensen Avatar answered Jan 25 '23 09:01

Peter Mortensen