Go Down

Topic: division (Read 1 time) previous topic - next topic


when i run this code i get zero why ??
Code: [Select]
analogHigh  = Serial.read( );
     analogLow = Serial.read();
     x = (analogLow + (analogHigh * 256));
     X = ((x/1024)*1.2);
     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.



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 ??



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 (x*25)/100 = 5


thats good point thanks :)


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).



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 ...
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)


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



Oooops. Thanks John.


Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131