Go Down

Topic: division (Read 760 times) previous topic - next topic

Rian

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=");
     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  ?

el_supremo

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


Rian

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

John_S

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
http://jsrintervalometers.blogspot.ca

Rian

thats good point thanks :)

el_supremo

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

Rian

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

robtillaart


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)

John_S

Quote
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
http://jsrintervalometers.blogspot.ca

el_supremo

Oooops. Thanks John.

Pete

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!

Arduino
via Egeo 16
Torino, 10131
Italy