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:
IF price = FINPRICE(20) THEN
xxxx
ENDIF
Merci par avance.
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:
Tracer une ligne horizontal à chaque centaine
en modifiant les lignes par les price.
y a pas encore de regex ou autre…
s’il y a une solution je suis preneur.
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.
prixtest = 1020
a = (prixtest)/20
test = round(a)=a
return test
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.
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 ! 😉
(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