​ ​ ​ ​ chiffre a virgule
Page 1 of 3 1 2 3 LastLast
Results 1 to 10 of 28

Thread: chiffre a virgule

  1. #1
    New Member
    Join Date
    Oct 2014
    Location
    france
    Posts
    20

    Default chiffre a virgule

    Bonsoir ,

    Je souhaite pouvoir utiliser un chiffre à virgule du genre 5,416523456 pour une application à base de picaxe. En premier je voudrais savoir si il est possible de le tronquer à 2 chiffres après la virgule(obtenir 5,41).Ensuite pouvez- vous m'expliquer comment utiliser la fonction BINTOASCII ( par exemple pour découper 5,41 afin de l'envoyer sur un afficheur via le picaxe)Et enfin , comment extraire le chiffre avant la virgule (ici le 5 dans 5,41)

    Merci pour vos réponses

  2. #2
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,788

    Default

    Quote Originally Posted by controlo View Post
    Bonsoir ,

    Je souhaite pouvoir utiliser un chiffre à virgule du genre 5,416523456 pour une application à base de picaxe. En premier je voudrais savoir si il est possible de le tronquer à 2 chiffres après la virgule(obtenir 5,41).Ensuite pouvez- vous m'expliquer comment utiliser la fonction BINTOASCII ( par exemple pour découper 5,41 afin de l'envoyer sur un afficheur via le picaxe)Et enfin , comment extraire le chiffre avant la virgule (ici le 5 dans 5,41)

    Merci pour vos réponses
    Bonsoir, et bienvenue sur le forum en français.

    Premier point : les Picaxes ne connaissent que les entiers positifs (entre 0 et 255) ou bien (entre 0 et 65535)
    Mais ce n'est pas forcément un problème pour afficher des résultats avec 2 chiffres après la virgule : il suffit de faire tous les calculs en centièmes et d'ajouter la virgule au moment d'envoyer le résultat à l'afficheur.

    Deuxièmement : si le but n'est pas seulement d'afficher deux chiffres après la virgule, mais de faire des calculs en virgule flottante, il existe des bibliothèques spécialisées, ou alors des processeurs externes. celà n'a un intérêt que si les ordres de grandeur des nombres à traiter varient beaucoup. Dans la très grande majorité des cas, les calculs peuvent se ramener à des nombres entiers en utilisant la bonne unité.

    Troisièmement : suivant les calculs à réaliser (addition, soustraction, multiplications, divisions, trigo, logs...) certains Picaxes sont plus adaptés. En outre, différentes techniques de calcul permettent de contourner les limitation du calcul sur les entiers positifs.

    Pour aller plus loin, il faudrait en savoir plus sur la nature des calculs envisagés et sur les ordres de grandeur des nombres en entrée. exemples bienvenus...

    Une question me taraude : a quoi correspond cette valeur 5,416523456 et comment l'introduisez vous dans le Picaxe :
    - est-ce une constante ? Une valeur analogique lue par un convertisseur CAN ? Une saisie au clavier ? Une valeur lue via un port série ? ... ?
    Last edited by BESQUEUT; 06-03-2018 at 22:31.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  3. #3
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,788

    Default

    En ce qui concerne bintoascii, voici un petit exemple avec votre nombre qui je l'espère vous parlera :
    Code:
    w0=54165
    bintoascii w0,b3,b4,b5,b6,b7
    sertxd (b3,",",b4,b5,b6,b7,cr,lf)
    sertxd (#b3," ",#b4," ",#b5," ",#b6," ",#b7,cr,lf)
    b8=b3-"0"
    b9=w0/10000
    sertxd ("b8=",#b8," b9=", #b9,cr,lf)
    Si vous lancez ça dans le simulateur, vous devriez obtenir :
    5,4165
    53 52 49 54 53
    b8=5 b9=5

    N'hésitez pas à poser d'autres questions si cette explication s'avère insuffisante.
    Last edited by BESQUEUT; 06-03-2018 at 22:25.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  4. #4
    New Member
    Join Date
    Oct 2014
    Location
    france
    Posts
    20

    Default

    Bonsoir BESQUEUT,

    Merci pour votre exemple.Par contre , dans le BINTOASCII je ne comprends pas pourquoi b3,b4,b5,b6,b7 et pas b0,b1,b2,b3,b4 ?

  5. #5
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,788

    Default

    Quote Originally Posted by controlo View Post
    Bonsoir BESQUEUT,
    Merci pour votre exemple.Par contre , dans le BINTOASCII je ne comprends pas pourquoi b3,b4,b5,b6,b7 et pas b0,b1,b2,b3,b4 ?
    Excellente question : je vous remercie de l'avoir posée...
    En fait w0, c'est la même chose que b0:b1
    Du coup, il vaut mieux ne pas utiliser b0 et b1 si on souhaite ré-utiliser w0...
    (mais j'aurais pu utiliser b2,b3,etc...)
    De plus, on n'est pas obligé de donner 5 variables si on n'a besoin que des premiers chiffres.

    Tout le reste est-il bien clair ? (y compris le b8=b3-"0" qui pose souvent problème aux débutants...)

    Au fait, je suis toujours taraudé par ma question du #2...
    There are 10 types of people in the world: those who understand binary, and those who don't.

  6. #6
    New Member
    Join Date
    Oct 2014
    Location
    france
    Posts
    20

    Default

    Question qui taraude !!

    En fait je souhaite calculer ATAN 9 qui doit donner 5.1426(ect..).Je n'ai besoin que du 5.14 pour pouvoir ensuite l'afficher .Mais quand je fait W0=ATAN 9 j'obtiens w0=5 .
    Si vous avez une idée - Merci de me la communiquer .
    Last edited by controlo; 07-03-2018 at 19:09.

  7. #7
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,788

    Default

    Quote Originally Posted by controlo View Post
    Question qui taraude !!

    En fait je souhaite calculer ATAN 9 qui doit donner 5.1426(ect..).Je n'ai besoin que du 5.14 pour pouvoir ensuite l'afficher .Mais quand je fait W0=ATAN 9 j'obtiens w0=5 .
    Si vous avez une idée - Merci de me la communiquer .
    Je comprends maintenant pourquoi ça me titillais autant...
    En fait votre résultat est conforme au manuel : vous obtenez un angle en degrés exprimé sous la forme d'un nombre entier positif. Voir premier point du #2.
    Si vraiment vous devez afficher deux chiffres après la virgule, il y a trois options :
    1) implémenter un algorithme pour calculer ATAN avec 5 chiffres significatifs. Ce sera lent et vraiment pas simple, mais ça parait possible.
    2) utiliser une FPU externe. Cher et pas si facile que ça à mettre en oeuvre, mais ça marche.
    3) Utiliser autre chose qu'un Picaxe...

    Cela dit, 9 n'ayant qu'un seul chiffre significatif, il est très surprenant de vouloir en déduire 3.
    Si ce n'est abuser de votre patience, serait-il possible de savoir d'où vient ce nombre ?
    There are 10 types of people in the world: those who understand binary, and those who don't.

  8. #8
    New Member
    Join Date
    Oct 2014
    Location
    france
    Posts
    20

    Default

    cher Besqueut ,

    Pour l'instant le 9 provient de rien , mais dans le projet que j'ai dans la tête ce chiffre pourrait provenir d'une entrée ADC du picaxe x par un coefficient.Normalement sur une calculatrice ATAN de 0.09 donne 5.1426.
    Je ne connais pas la FPU pouvez-vous m'en dire plus (comment l'utiliser avec un picaxe)

  9. #9
    Senior Member
    Join Date
    Sep 2011
    Location
    Montpellier (FRANCE)
    Posts
    2,788

    Default

    Algo pour calculer ATAN
    Assez simple et n'utilise que les 4 opérations.
    Mais essayez déjà de calculer x- (x^3)/3 + (x^5)/5 avec 5 chiffres significatifs sur un Picaxe...
    Sachant que x<0,268 on peut multiplier x par 200 000 et rester inférieur à 65535
    on calculera donc 200 000 x , on divisera par 2 au dernier moment et on ajoutera une virgule au bon endroit.
    Jusque là tout va bien.
    Calculons x*x. C'est sur, ça risque de dépasser 65535...
    Mais heureusement, le Picaxe a prévu le coup avec l'opérateur **, voir la doc...
    Bonne chance...
    Last edited by BESQUEUT; 07-03-2018 at 20:40.
    There are 10 types of people in the world: those who understand binary, and those who don't.

  10. #10
    New Member
    Join Date
    Oct 2014
    Location
    france
    Posts
    20

    Default

    BESQUEUT ,

    Je ne comprends pas tout et surtout pourquoi X est inférieur à 0.268.Pouvez-vous détailler vos calcul avec une valeur de X.Mon picaxe (20X2) ne prend pas les parenthèses alors que la doc dit le contraire

    Merci de m'aider à comprendre !
    Last edited by controlo; 08-03-2018 at 11:05.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •