division

when i run this code i get zero why ??

 analogHigh  = Serial.read( );
      analogLow = Serial.read();
      x = (analogLow + (analogHigh * 256));
      X = ((x/1024)*1.2);
      Serial.print("x=");
      Serial.print( X, DEC);
      Serial.print(" , ");

but when i delete X = ((x/1024)*1.2);

i get the value right but i want it to do the above equation ? any suggestion ?

If you have declared x and X (bad choice of names by the way) to be integers then (x/1024) will be zero whenever x is less than 1024.

Pete

thnx for answering .

i actually have it less then 1024

the answer should be = 0.5859
so i should declare my X to double or float ??
am confused with double and float which one should i use ??

thanks

Use float. In Arduino, double does the same thing though.

Just wanted to add, in most cases, it is best to multiply before dividing when working with integers.
if x = 20, (x/100)25 = 0 ...but (x25)/100 = 5

thats good point thanks :slight_smile:

One way ot fix it is to change 1024 to 1024.0 which will then force the division as floating point instead of integer.
And declare X to be float or double. Float gives about 6 digits of precision and double gives about 12 (IIRC).
You will also have to change Serial.print( X, DEC); to Serial.print( X, 4); so that X is printed as a floating point number with 4 digits after the decimal point (or however many you want).

Pete

thanks for that . well can i do like if i have x= 0.26 how can i make it = 0.3 which to a proximation value ??

x = x + roundingNr;
x = int(x*Factor)/Factor;

homework: find the two variables roundingNr and Factor ...

Float gives about 6 digits of precision and double gives about 12 (IIRC).

Although that may be the case in other programming languages, in Arduino float and double are essentially the same

http://arduino.cc/en/Reference/Double

Oooops. Thanks John.

Pete