Hey guys so i have a gps and i take the longitude and latitude through a library. I want to have 4 decimal digits so i want to convert the almost 20 decimal digits long numbers into 4 decimals so i send the coordinates into a function as shown below. I was doing a debugging in every step and i see inconsistencies with the type casting. Can you tell why i get that output? I mean i divide a number with decimal digits all zeros and i get something out of the ordinary as you can see in final variable thats ridiculous.
float conv_4digits(float coordinate){
Serial.print("coordinate ");Serial.println(coordinate,30);
float final;
float var1;
var1 = (int)coordinate;
Serial.print("var1 "); Serial.println(var1,30);
float var2 = coordinate - var1;
Serial.print("var2 "); Serial.println(var2,30);
var2 = var2 * 10000;
Serial.print("var2 "); Serial.println(var2,30);
float var3 = (int)var2;
Serial.print("var3 "); Serial.println(var3,30);
float var4 = var3 / 10000;
Serial.print("var4 "); Serial.println(var4,30);
final = var1 + var4;
Serial.println(final, 10);
return final;
}
OUTPUT
coordinate 34.684024810791015625000000000000
var1 34.000000000000000000000000000000
var2 0.684024810791015625000000000000
var2 6840.248046875000000000000000000000
var3 6840.000000000000000000000000000000
var4 0.684000015258789062500000000000
34.6839981079
Any clues? i tried to type cast integers where as applicable i got hex numbers.
Is there a better way to output the longitude and latitude with 4 decimal digits and store it in a variable? Because i want to make if statements and compare them against some fixed longitudes and latitudes with 4 decimal digits.