Le forum français des radios OpenTX ou FrOS
Le forum français des radios OpenTX ou FrOS
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -30%
LEGO Icons 10318 – Le Concorde à ...
Voir le deal
139.99 €

Comment ne garder que 2 chiffres après la virgule pour une valeur ?

+2
nicephore
captflame2121
6 participants

Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par captflame2121 Mer 7 Juil 2021 - 13:56

Bonjour j'arrive à faire afficher le VFAS, l'altitude ...... le problème c'est que je ne trouve pas comment ne faire afficher que par exemple 2 chiffres
après la virgule.
Les valeurs sont bien affichées mais j'ai parfois 8 chiffres après la virgule et cela décale du coup l'affichage.

Quelqu'un à t il un exemple concret car c'est plus facile pour comprendre .

merci encore Comment ne garder que 2 chiffres après la virgule pour une valeur ? 2258904616

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par nicephore Mar 13 Juil 2021 - 10:31

Bonjour,
Simplement en utilisant math.round(Valeur, Nombre de décimale)

Exemple :
print(math.Round(54.12345, 2))

Donnera 54.12

nicephore

Masculin Messages : 612
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par captflame2121 Mar 13 Juil 2021 - 10:37

merci beaucoup Nicéphore  Very Happy Very Happy Very Happy Very Happy Very Happy

Je viens de tester et voir si j'y arrivais pour avoir que 2 chiffres
après ma variable alt comme ci dessous :

lcd.drawText(375,60,alt)


j'ai remplacé par  
lcd.drawText(375,60,math.Round(alt, 2))


Cela ne fonctionne pas   confused confused

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par Barceque Jeu 15 Juil 2021 - 9:51

Peut-être parce que tes décimales doivent-être écrites avec un point et non une virgule. La virgule est utilisée pour séparer les arguments donc si tu en rajoutes à cause des décimales, le programme ne comprend plus rien.

Bon courage

Barceque

Masculin Messages : 118
Date d'inscription : 27/04/2017
Age : 44
Localisation : Vaucluse

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par CoyotteDundee Jeu 15 Juil 2021 - 10:44

Bonjour,

Selon la doc de Lua 5.4, il n'y a pas de fonction math.round()
( https://www.lua.org/manual/5.4/manual.html#6.7 )

Ceci explique probablement cela.

Coyotte

_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par Mipel Jeu 15 Juil 2021 - 11:18


_________________
Electrique :
Avions: clik R2 + mini-polyclub en indoor
Planeurs: Gem, Serenity et Typhoon
Hélicos: Trex 450-550
Drones: Wizard X220, Aurora 90 vol à vue+fpv
Thermique :
Extra 300 78'' avec DLE 35RA


Besoin d'infos ? https://opentx-doc.fr/ (co-admin du site avec LapinFou)
Mipel
Mipel
Modérateur

Masculin Messages : 3354
Date d'inscription : 08/06/2017
Age : 66
Localisation : 85 Vendée - Aéromodélisme Sablais

http://aeromodelisme-sablais.fr

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par nicephore Jeu 15 Juil 2021 - 12:21

Ha ! Plus de math.round en v 5.4.

Donc dans ce cas passer par math.floor

et écrire une fonction round :

function round(number, decimals)
local power = 10^decimals
return math.floor(number * power) / power
end

Exemple :

Round(54.12345, 2)
Donnera 54.12

nicephore

Masculin Messages : 612
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par captflame2121 Jeu 15 Juil 2021 - 15:12

J'arrive à récupérer la la valeur du VFAS AVEC getvalue(VFAS) dans une variable :
local rx_volt = getValue("VFAS")

Mais j'ai au moins 8 chiffres après la virgule à l'affichage pour rx_volt.
Trop de place et inutile.

Je veux seulement afficher les 2 décimales derrière cette virgule.
La valeur du VFAS est avec une virgule pas un point.

Je veux bien essayer cette fonction mais je ne vois comment intégrer ma variable VFAS dans la fonction round.
DSL

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par CoyotteDundee Jeu 15 Juil 2021 - 15:28

Re,

Je crois que tu devrais vraiment commencer par un cours de base en Lua.
Cela te permettrait de maîtriser les notions de base en programmation, sans lesquelles tu vas te retrouver coincé à chaque demi-pas que tu feras, ce qui n'est guère encourageant.

Le site Lua.org est un bon point de départ pour cela.

Coyotte



_________________

... the alien anthropologists admitted they were still perplexed.
But on eliminating every other reason for our sad demise, they logged the only explanation left :
This species has amused itself to death...
                                                                                                                                    (R. Waters)

Pas de support par MP ! Nous sommes sur un forum pour échanger publiquement.
CoyotteDundee
CoyotteDundee
Administrateur

Masculin Messages : 5886
Date d'inscription : 03/03/2014
Age : 60
Localisation : Montegnée (Liège)

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par pointu Jeu 15 Juil 2021 - 23:15

Une solution est de créer un capteur calculé avec les décimales que vous souhaitez, par exemple AltM à partir de Alt avec 0 décimales :

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Captur10
pointu
pointu

Messages : 797
Date d'inscription : 16/11/2014
Age : 61
Localisation : Cachan

https://www.amcy.fr

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par captflame2121 Sam 17 Juil 2021 - 9:51

Très compliqué pour ne faire afficher que 2 décimales . Embarassed

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par pointu Sam 17 Juil 2021 - 12:00

pointu
pointu

Messages : 797
Date d'inscription : 16/11/2014
Age : 61
Localisation : Cachan

https://www.amcy.fr

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par captflame2121 Dim 18 Juil 2021 - 9:36

Bonjour pointu,
Merci j'avais vu cette formule mais je n'arrivais pas à l'utiliser correctement.

En fait de ce que l'on récupère dans Companion il y à une virgule dans certaines données et non pas un point.
Du coup Prec1 Prec2 ne fonctionne pas correctement car il ne prends pas la virgule et garde la valeur du chiffre entier.
Pour récupérer les décimales et passer de , à . j'ai fait comme çà:
Par exemple pour le Gsd dans la télémétrie sous Companion
Gspd  = 17,3 km / h

Et bien pour le récupérer Gspd et le faire afficher dans une variable et avoir les décimales j'ai dû multiplier par 200 ( écart de x 2 entre Gsd et résultat
Et j'ai div par 10 pour récupérer les décimales :

Code:
lcd.setColor(CUSTOM_COLOR, lcd.RGB(0,255,0) )
  lcd.drawNumber(X_vario+355,Y_vario+9,(GSpd*200)/10,PREC1+SMLSIZE+CUSTOM_COLOR)

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par nicephore Lun 19 Juil 2021 - 9:44

Bonjour,

Il semble donc que ta valeur soit un string (13,456789)

Pourquoi ne pas la convertir ton string en float avec par exemple:

Float floatVal = Float.valueOf(String_Value)

A voir si ceci peux fon ctionner dans ta version de LUA.

nicephore

Masculin Messages : 612
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par nicephore Lun 19 Juil 2021 - 9:46


Et donc dans cet exemple nous retrouvons bien le round dont je parle plus haut Comment ne garder que 2 chiffres après la virgule pour une valeur ? 2258904616

nicephore

Masculin Messages : 612
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par captflame2121 Lun 19 Juil 2021 - 11:14

Bonjour je vais essayer de le convertir de string en float.
merci

captflame2121

Masculin Messages : 381
Date d'inscription : 10/06/2019
Age : 47
Localisation : bourgogne

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par pointu Lun 19 Juil 2021 - 11:53

nicephore a écrit:

Et donc dans cet exemple nous retrouvons bien le round dont je parle plus haut Comment ne garder que 2 chiffres après la virgule pour une valeur ? 2258904616

Oui oui si tu veux autre chose que 1 ou 2 décimales.
pointu
pointu

Messages : 797
Date d'inscription : 16/11/2014
Age : 61
Localisation : Cachan

https://www.amcy.fr

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par nicephore Lun 19 Juil 2021 - 12:12

La fonction Round est définie comme ceci:

function round(number, decimals)
local power = 10^decimals
return math.floor(number * power) / power
end

Ses paramètres sont:
number = un float comme par exemple : 54.12345
decimals = un integer comme par exemple 2 (il s'agit du nombre de décimale(s) voulu)

Donc l'appel de la fonction comme ceci :

Round(54.12345, 2)

Donnera 2 décimales

et si nous changeons le paramètre decimal et que l'on y passs 4:

Round(54.12345, 4)

Donnera 4 décimales

nicephore

Masculin Messages : 612
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par Mipel Lun 19 Juil 2021 - 12:38

Ici, ce n'est pas comment utiliser la fonction qui pose problème mais le fait que Round() de soit plus disponible en lua 5.4.
D'où les méthodes de substitutions proposées.

_________________
Electrique :
Avions: clik R2 + mini-polyclub en indoor
Planeurs: Gem, Serenity et Typhoon
Hélicos: Trex 450-550
Drones: Wizard X220, Aurora 90 vol à vue+fpv
Thermique :
Extra 300 78'' avec DLE 35RA


Besoin d'infos ? https://opentx-doc.fr/ (co-admin du site avec LapinFou)
Mipel
Mipel
Modérateur

Masculin Messages : 3354
Date d'inscription : 08/06/2017
Age : 66
Localisation : 85 Vendée - Aéromodélisme Sablais

http://aeromodelisme-sablais.fr

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par nicephore Lun 19 Juil 2021 - 16:46

Mipel a écrit:Ici, ce n'est pas comment utiliser la fonction qui pose problème mais le fait que Round() de soit plus disponible en lua 5.4.
D'où les méthodes de substitutions proposées.

Et oui et c'est bien dommage que certaines fonction ne soit pas / plus disponible en fonction des versions de LUA. Pour les non programmeur c'est pas simple de créer une fonction en adéquation au besoin.

nicephore

Masculin Messages : 612
Date d'inscription : 14/06/2014
Localisation : Créteil

Revenir en haut Aller en bas

Comment ne garder que 2 chiffres après la virgule pour une valeur ? Empty Re: Comment ne garder que 2 chiffres après la virgule pour une valeur ?

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum