Go Down

Topic: division (Read 652 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