float 값을 문자열에 추가하는 방법은 무엇입니까?

float 변수 lng = 33.785469 및 lat = 78.126548이 있습니다. 이제 문자열로 변환하고 문자열 변수 “my_location”에 “사용자 위치는 \ nlng = 33.785469 \ nlat = 78.126548″로 추가 할 수 있습니다.

 char charVal[5]; //temporarily holds data from vals String stringVal = ""; //data on buff is copied to this string dtostrf(lng , 4, 2, charVal); //4 is mininum width, 2 is precision; float value is copied onto buff //convert chararray to string for(int i=0;i<sizeof(charVal);i++) { stringVal+=charVal[i]; } GPS_string = GPS_string + "Car location: \nlat:" + stringVal; stringVal = ""; 

로이 작업을하려고했는데 오류가 발생했습니다.

error: cannot convert "String" to "double" for argument "1" to "char* dtostrf(double, signed char, unsigned char, 

답변

이전 질문 에서 답변되었지만 반복 할 수 있습니다. 여기에 있습니다.

void loop() { ... float latitude = 33.546600; float longitude = 75.456912; String buf; buf += F("your location is \nlat:"); buf += String(latitude, 6); buf += F("\nlong:"); buf += String(longitude, 6); Serial.println(buf); ... } 

대안은 스 니펫에서와 같이 dtostrf () 를 사용하는 것입니다. :

void loop() { ... float latitude = 33.546600; float longitude = 75.456912; const int BUF_MAX = 64; char buf[BUF_MAX]; const int VAL_MAX = 16; char val[VAL_MAX]; strcpy_P(buf, (const char*) F("your location is \nlat:")); dtostrf(latitude, 8, 6, val); strcat(buf, val); strcat_P(buf, (const char*) F("\nlong:")); dtostrf(longitude, 8, 6, val); strcat(buf, val); ... } 

건배!

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다