Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Fonction pour arrondir des valeurs
Thebigbadboy Hors ligne Maître du Puzzle Points: 277 Défis: 16 Message

Fonction pour arrondir des valeurs

Posté le 27/07/2021 21:31

Bon, je vous la fais courte : je suis en train de chercher pour arrondir la variable X de telle sorte que :
- Seuls les 4 premiers chiffres significatifs sont retenus;
- La décimale la plus petite à garder est 0.001 (autrement dit, revient à faire un RndFix(X, 3) )

Voici pour le moment ce que j'ai (les * sont des multiplications) :
10^Intg log Abs X*(RndFix(X,3)*10^-Intg log Abs X+1E11-1E11


Ce code pèse exactement 26 octets (en enlevant les signes de multiplications étant inutiles), et une chose est particulièrement gênante : la fonction n'est pas définie en X=0.

Si vous vous demandez ce que font les 1E11 : l'ordre de calcul est le suivant : RndFix(X,3)*10^-Intg log Abs X, qui va arrondir à 3 décimales X puis, grâce à une puissance de 10, "placer" X dans l'intervalle [1,9[. on y ajoute ensuite 1E11, et comme lors d'un calcul seuls 15 chiffres significatifs sont enregistrés cela permet d'arrondir une nouvelle fois notre variable. On ré-enlève ce 1E11, et finalement on remet la variable X à la même puissance de 10 qu'initialement. Cela peut paraître incensé/inutile, mais je n'ai pas trouver d'autre moyen étant donné qu'un RndFix dans un autre provoque une erreur...

J'aimerais ne pas à chaque fois tester si X est non nul, c'est pourquoi je fais appel à vous !
N'hésitez pas à changer complètement de méthode, mais j'ai une grosse préférence pour les fonctions que l'on peut enregistrer dans les fonctions graphiques (Y1 par ex) - qui sont faciles à évaluer, merci !


Lephenixnoir En ligne Administrateur Points: 21357 Défis: 149 Message

Citer : Posté le 27/07/2021 21:53 | #


Si X est nul le résultat est nul. Tu peux possiblement :
• Remplacer X par X+(X=0)
• Multiplier le résultat par (X≠0)

Si ta fonction s'appelle Y1, tu peux définir Y2 comme ceci :

(X≠0)Y1(X+(X=0))

et obtenir le résultat que tu veux.
Thebigbadboy Hors ligne Maître du Puzzle Points: 277 Défis: 16 Message

Citer : Posté le 27/07/2021 23:23 | #


Nice merci !
Un problème sans solution est un problème mal posé — Albert Einstein

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 74 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd