# Math problem in Particle Electron

hi all,

I am encountering a math problem with my particle, I need to divide pulses by 88 to get liters on my flow meter. if I use the inter value it reports to the console the pulses, but when i try to divide by 88 it just reports a 0.000.

what could be the problem.

``````int LEDpin = D7;
unsigned long publish_delay = 20000;
unsigned long LastPublish = 0;
int state = LOW;
unsigned long WaterPulseCount = 0;

void setup()
{
pinMode(LEDpin, OUTPUT);
pinMode(A1,INPUT_PULLUP);
attachInterrupt(A1,WaterInterupt, CHANGE);
}

void loop() {
unsigned long now = millis();

digitalWrite(LEDpin,state);
if((now - LastPublish) < publish_delay)
{
double liters = WaterPulseCount / 88;

Particle.publish("data",String(liters));
LastPublish = millis();
delay(1000);
WaterPulseCount = 0;
}
}

void WaterInterupt()
{
state = !state;
WaterPulseCount++;
}
``````

When both operands in a division are integers then the result will also be an integer, irrespective of the target variable which should receive the result after the fact.

You can do this to force a floating point division

``````  double liters = WaterPulseCount / 88.0;
``````
4 Likes

hi

thanks working like a dream now. thanks a lot and have a good day.

1 Like

This is also a reason why I rarely put â€śmagicâ€ť constants in executed lines of code but instead as their own constant variables. This way you can better enforce your expectations for how that value will be used.

Eg:

``````const double kPulsesPerLiter = 88;
// ...
double liters = WaterPulseCount / kPulsesPerLiter;
``````

Alternatively, in a more generic case, and especially when sharing code amongst other people, there is a danger that if someone changes the magic constant number, that they might forget the `.0`. For that reason I would also have a slight preference for an explicit typecast, such as:

``````double liters = WaterPulseCount / static_cast<double>(88);
``````
2 Likes

thanks, for this, if your ever in Cape Town South Africa there is an open invitation for a beer.

1 Like