voici un petit souci qui complique souvent la logique même de mes patchs, peut-être avez vous la solution
la fonction round arrondi à 1 près, j'arrive également à arrondir à 0,125 avec un patch simple
j'aimerai pouvoir arrondir à
0,1
0,01
0,001
0,0001
0,00001
exemple du problème:
(A/B)xB
avec A une valeur quelconque
et B (0,1 ou 0,01 ...)
le résultat n'est pas égal à A
or (A/B)xB=A
J'ai toujours cru que le "data out" fesait cet arrondi avec la fonction precision mais il ne semble que afficher cet arrondi mais envoi la valeur à rallonge.
exemple: 0,1=0.100000001490116
je suppose que ces valeurs à rallonge sont dues à la base même du fonctionnement d'usine (supposition seulement),
s'il n'y a pas de solution quelles sont les valaurs proches admises par usine,
par exemple en suposant que 0,125 est proche de 0,1 quelles sont les valeurs proches de
0,01
0,001
0,0001
0,00001
problème récurrent, précision et arrondi
bon au final en remaniant le fonctionnement de mon patch j'ai esquivé le problème (ou plutot j'ai laissé tombé mon idée de base).
si y'a une astuce je suis toujours interessé,
les valeurs admises que je recherchais n'existe pas, pour simplifier au maximum les patchs j'utilise les valeurs:
0.5
0.25
0.125
0.0625
0.03125
ces valeurs semblent faire des résultats moins anarchique.
si y'a une astuce je suis toujours interessé,
les valeurs admises que je recherchais n'existe pas, pour simplifier au maximum les patchs j'utilise les valeurs:
0.5
0.25
0.125
0.0625
0.03125
ces valeurs semblent faire des résultats moins anarchique.
PatcherKit at work.
Je ne suis pas spécialiste, mais ça doit venir du nombre de décimales considéré par usine (problème d'ailleurs identique sur n'importe quel calculateur) ?(A/B)xB
avec A une valeur quelconque
et B (0,1 ou 0,01 ...)
le résultat n'est pas égal à A
or (A/B)xB=A
Avec des valeurs simples de A (nombres entiers à 1 ou 2 chiffres), tu dois bien obtenir (A/B)*B = a quand même ?
Mais pour A une valeur qui utilise toutes les décimales utiles, en divisant par B (donc en multipliant par 10, 100, 1000...) tu perd 1, 2, 3... décimales de départ. D'où la différence finale.
D'un autre côté, si tu veux arrondir à 0,001 près, les décimales perdues ne devraient pas avoir d'importance, non ? La fonction round sur 1000*A ne te donne pas exactement ce que tu veux ?
Merci pour ton aide djPESSOA ton post m'a donné une partie de la solution,
en effet en sortant des tout mes sous patchs un "data out" pour régler la "precision" de tout les éléments (obligatoire dans mon cas car la precision est variable), le problème disparait de lui même.
C'était simple mais j'y avais pas pensé avant.
Je voulais pas avoir l'air de dire du mal de usine je l'aime beaucoup ce logiciel,
mes critiques sont souvent le fruit de mon ignorance mais c'est un peu la raison de ce forum il me semble.
Merci à tous et bon patch...
en effet en sortant des tout mes sous patchs un "data out" pour régler la "precision" de tout les éléments (obligatoire dans mon cas car la precision est variable), le problème disparait de lui même.
C'était simple mais j'y avais pas pensé avant.
Je voulais pas avoir l'air de dire du mal de usine je l'aime beaucoup ce logiciel,
mes critiques sont souvent le fruit de mon ignorance mais c'est un peu la raison de ce forum il me semble.
Merci à tous et bon patch...
PatcherKit at work.
Who is online
Users browsing this forum: No registered users and 58 guests
