Travail sur les prix (finissant par 20 par ex)

Forums ProRealTime forum Français Support ProOrder Travail sur les prix (finissant par 20 par ex)

Viewing 6 posts - 1 through 6 (of 6 total)
  • #132175

    Bonjour,

    Je cherche désespérément le code permettant de savoir si un prix se termine par « 20 » ou par « 50 » par exemple.

    Evidemment il s’agit de fonction existante dans des langages de programmation standard mais sous Prorealcode est-ce que cela est possible ?

    pour faire:

    Merci par avance.

    #132205

    Bon si je comprends bien d’après mes recherches ça va être difficile. Je pense que ce n’est pas encore devoloppé et on doit bidouiller avec ce genre de truc:

    https://www.prorealcode.com/topic/tracer-une-ligne-horizontal-a-chaque-centaine/#post-91468

    en modifiant les lignes par les price.

    y a pas encore de regex ou autre…

    s’il y a une solution je suis preneur.

    #132241

    Si ça peut t’aider :

    Un nombre entier est divisible par 20 si il se termine par 0, 20, 40, 60 ou 80.

    Un nombre entier est divisible par 25 si il se termine par 0, 25, 50 ou 75.

     

     

    #132247

    Merci Nicolas,

    Une bidouille plus facile à mettre en place il est vrai…
    A quand un langage de prog plus puissant / complet dans PRT (fonctions, tableaux, math, …)   😉 ?

    Encore merci.

    #132250

    Les tableaux existent, voir ce sujet: array variables availability in ProRealTime – examples and discussions

    Les fonctions viendront dans une mise à jour v11 sans doute.

    Pour des instructions mathématiques qui manqueraient, n’hésite pas à me les lister stp, merci ! 😉

    #132340

    (en supposant que ton 20 est avant la virgule, pas en position variable avant ou après)

    Tu prends ton nombre entier, tu le divises par 100, et tu y soustrais l’arrondi, pour vérifier que la différence vaut bien 0.2 :

    Si nombre/100 – round(nombre/100) = 0.2 alors le nombre finissait par 20

    Extrapolation autre que 20 : si tu veux 40 il faut =0.4, mais si tu veux quelque chose supérieur à 50 alors round va arrondir du mauvais côté (ex 1060 donnera 10.6 et 11 donc il faudra chercher =-0.4, et donc séparer les cas sup et inf à 50 si on veut généraliser (ou pour ne pas séparer les cas, utiliser l’astuce qui décale de 0.5 avant d’arrondir via round, qu’on peut trouver dans plusieurs files via le bouton search du site, au choix)

    Petit mot pour le “futur débutant” lecteur du topic qui se demande pourquoi compliquer avec round: au moment d’écrire ces lignes sont utilisées selon le broker la v10.3 ou la v11. En v10.3 on n’a que round, en v11 on a floor et ceil, et en v11 il suffit bien sûr d’utiliser floor au lieu de round pour ne pas avoir besoin de séparer les cas sup et inf à 50

Viewing 6 posts - 1 through 6 (of 6 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login