6

Arduinoの文字列からフロートまでのGPS読み取り値を取得しようとしています。文字列はすべての数字をうまく処理しますが、それを分割してフロートを取得すると、4桁が失われます。これが私のコードです:

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

小数点が含まれている文字列で .toFloat を使用すると、結果は同じになり、小数点の後に 2 つの数字のみが表示されます。

数字の例:

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

2 に答える 2

5

わかりました、私は間違っていました。デフォルトの print 関数は 2 桁の精度しか使用しません。そのため、ステートメントに必要な桁数を追加する必要がありました。

print(lat, 20);

シリアル モニタで 20 桁の精度が得られます。

print(lat)

2つだけを与えます。

于 2012-08-23T13:55:46.303 に答える
0

float の代わりに Double を使用します。

詳細については、 http://en.wikipedia.org/wiki/Primitive_data_typeおよびhttp://en.wikipedia.org/wiki/Double_precision#Double-precision_examplesを参照してください。

于 2012-08-22T14:49:30.000 に答える