2012-08-22 7 views
6

Arduino의 문자열에서 gps 읽기를 얻으려고합니다. 문자열은 모든 숫자를 모두 잘 처리하지만, 그것을 나눌 때 부동 소수점을 얻을 때 4 자리를 잃어 버립니다. 여기 내 코드입니다 : 그것은 똑같은 결과 여전히 소수점이있는 문자열에 .toFloat를 사용플로트를 나눌 때 자릿수가 사라짐 C++ (Arduino)

gpsStrings[0].replace(".", ""); 
lat = gpsRawData[0].toFloat(); 
lat = lat/1000000.0; 

, 소수점 두 숫자.

예 번호 :

42427898 :: 42.43 - what happens 
42427898 :: 42.427898 - what I want to happen 

답변

5

괜찮 았던가, 기본 인쇄 기능은 두 자릿수의 정밀도 만 사용합니다. 그래서 저는 성명서에 원하는 자릿수를 추가해야했습니다.

print(lat, 20); 

print(lat) 

만이 제공 시리얼 모니터에 정밀도의 20 개 자리를 제공 할 것입니다.

0

당신은 플로트 대신 두 번을 사용하고 싶습니다.

자세한 내용은 http://en.wikipedia.org/wiki/Primitive_data_typehttp://en.wikipedia.org/wiki/Double_precision#Double-precision_examples을 참조하십시오.

+1

동일한 결과가 나타납니다. Arduino double은 float보다 정확하지 않습니다. 그들은 같은 자릿수를 유지할 수 있습니다. http://arduino.cc/en/Reference/Double – Steven

+0

나는 그것이 아주 불행한 것을 알 수있다. 팁 주셔서 고마워. – ZnArK