MicroNMEA converting to N/S/E/W format

I am trying to convert nmea.getLatitude() to string and add N/S/E/W . However, none of the way of converting long to string works. Any ideas?

  if (nmea.isValid() == true) {
    long latitude_mdeg = (nmea.getLatitude() / 10000., 2);
    long longitude_mdeg = (nmea.getLongitude() / 10000., 2);
    String latitude1_string = String(latitude_mdeg);
    String longitude1_string = String(longitude_mdeg);
    Serial.print("Latitude (deg): ");
    Serial.println(latitude1_string );
    Serial.print("Longitude (deg): ");
    Serial.println(longitude1_string);

}

The problem I have is latitude1_string and longitude1_string prints out "2".
I am not sure why

Get rid of the ", 2" after the decimal places. Look up "C/C++ comma operator" to learn why.

You don't need the String operations. Serial.print() can handle numbers.

I am just printing it out right now for debugging. I still need it in a variable to form other strings.

Ok. Found what's wrong. Thanks

>  if (nmea.isValid() == true) {
>         float latitude_mdeg = nmea.getLatitude() / 10000.;
>         float longitude_mdeg = nmea.getLongitude() / 10000.;
>         String latitude1 =  (latitude_mdeg > 0) ? String(latitude_mdeg)+"N" : String(latitude_mdeg)+"S";
>         String longitude1 = (longitude_mdeg > 0) ? String(longitude_mdeg)+"E" : String(fabs(longitude_mdeg))+"W";
> 
>         Serial.print("Latitude (deg): ");
>         Serial.println(latitude1);
>         Serial.print("Longitude (deg): ");
>         Serial.println(longitude1);

No, you never do.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.