2017-04-14 32 views
0

誰かが十進数の良い解決策を持っているのだろうかと思います。Arduino float - 6桁の数字

私はArduino Megaを使用し、小数点以下6桁の浮動小数点数を変換しようとします。試してみると5桁の数字が正しく表示されますが、6は表示されません.6の数字はカウントされないか、0として表示されます。私はさまざまなことを試しましたが、 。

誰にでも解決策がありますか?

Appriciateすべてが

答えて

0

は、精度を維持するために浮動小数点数のスケーリングされた整数フォームを使用することができます。

特に、これらがGPSデバイスからの緯度/経度値の場合は、私のNeoGPSに興味があるかもしれません。内部的には、32ビットの整数を使用して10桁の有効数字を維持します。あなたが発見したように、ほとんどの図書館はfloatを使用しているため、6桁または7桁の数字しか提供しません。

NMEAloc.inoの例では、のように32ビットの整数をのように浮動小数点値として出力する方法を示しています。それはちょうど正しい場所に小数点を表示します。

NeoGPSの距離と方位の計算は、その精度を維持する方法で数学演算を実行するのにも注意が必要です。ナイーブな計算でfloatタイプを使用する他のすべてのライブラリとは異なり、結果は小距離/ベアリングで非常に優れています。

+0

ありがとう、私はそれを試します:) –

0

4バイトの浮動小数点数が6桁を保持することができます助けます。 8バイトの倍精度で15を保持できます。

必要な精度を得るには、倍精度を使用する必要があります。一般に

info on 4 byte floats

+0

[Arduino's doubles](https://www.arduino.cc/en/reference/double)もちょうど4バイトです。 –

+0

私はこのようにしようとしました: double lat; 文字列を強化します。 lat = 59.123456; strength =文字列(lat、6); これは、以下のようにしか表示されません:59.123455 –

関連する問題