Go Down

Topic: probleme de précision de valeur  (Read 112 times) previous topic - next topic

SPY

Bjr, je veux avoir une variable à virgules à 8 chiffres car c'est pr des longitude et latitude et je veux les mutiplier pr avoir en chiffre sans virgule que je diviserai après l'envoi sur rasp.
Voilà mon programme:

double longitude=150.236265;
void setup() {
 Serial.begin(9600);
}


void loop() {
long longitude1=longitude*1000000;
Serial.println(longitude);
Serial.println(longitude1);
delay(1000);
}

et je recupere:
150.24
150236272

la premiere je m'en fout mais la deuxieme au lieu d'avoir un 65 j'ai un 72 j'ai tout essayer rien. et j'ai absolument besoin de cette precision.

fdufnews


_pepe_

Bonjour

La précision requise pourrait être atteinte en traitant des entiers longs (type long int) plutôt que des nombres à virgule flottante. En utilisant comme unité le 1/1000000ème de degré, le nombre stocké correspond directement à la valeur à transmettre.

Il faudrait savoir d'où provient ce nombre pour déterminer quels seraient les traitements particuliers éventuellement nécessaires à son obtention.

ChPr

Vous extrayez certainement ces valeurs d'une chaîne de caractères issue de phrases NMEA.

Profitez-en pour séparer les degrés et la partie fractionnaire.

Chacune de ces deux valeurs entrera (limite pour la partie fractionnaire) dans la précision d'un float.

Maintenant, il faut être conscient que le dernier chiffre (10-6 °) correspond à 10 cm !

Cordialement.

Pierre
Pourquoi faire simple alors qu'il est si facile de faire compliqué !

fdufnews

Bjr, je veux avoir une variable à virgules à 8 chiffres car c'est pr des longitude et latitude et je veux les mutiplier pr avoir en chiffre sans virgule que je diviserai après l'envoi sur rasp.
Et pourquoi ne pas envoyer tel quel au Raspi qui lui saura manipuler des "vrais" doubles contrairement à l'Arduino

Go Up