Fonction TRONQUE résultats anormaux

Résolu/Fermé
funnyfranky - Modifié par pijaku le 16/07/2015 à 08:35
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 16 juil. 2015 à 20:03
Bonjour

J'ai des résultats irréguliers en utilisant la fonction TRONQUE ou même la fonction ARRONDI.INF. À l'intérieur d'une plus grande formule j'utilise ceci pour extraire les centimes d'un montant : =TRONQUE((J4-TRONQUE(J4))*100)

Si ma case J4 = 100000.03, le résultat attendu est 3 mais j'obtiens plutôt 2.
Si ma case J4 = 0.03, j'obtiens 3 donc pas de problème.
Si ma case J4 = 50.04, le résultat attendu est 4 mais j'obtiens plutôt 3.

Quelqu'un peut m'expliquer pourquoi je n'obtiens pas les résultats qui devrait être obtenus par calcul mathématique? Est-ce que mon ordinateur est possédé par un esprit malveillant? Avez-vous une formule alternative à la mienne qui me donnerait le bon résultat à coup sur?

Merci d'avance.



A voir également:

7 réponses

Mike-31 Messages postés 18347 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 novembre 2024 5 104
15 juil. 2015 à 21:42
Bonsoir,

Essaye comme cela

=(J4-TRONQUE(J4))*100
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 15/07/2015 à 21:53
Bonjour,

Il s'agit d'un problème d'arrondi lors de la conversion du décimal en binaire (malheureusement tous les processeur actuels travaillent en binaire).

Tu peux utiliser la formule suivante :
=MOD(ENT(J4*100)/100;1)*100

Cordialement
Patrice
0
Merci à vous deux pour vos réponses et explications. Je vais vous donner plus d'info car je n'ai rien pu régler. J'utilise ceci à l'intérieur d'une fonction RECHERCHEV donc je dois utiliser un TRONQUE de plus sinon j'ai une erreur "#N/A" en utilisant que:

=RECHERCHEV((J4-TRONQUE(J4))*100;Tableau1;2;FAUX)

ou même:

=RECHERCHEV(MOD(ENT(J4*100)/100;1)*100;Tableau1;2;FAUX)

et en faisant ceci je n'obtiens toujours pas le bon résultat:

=RECHERCHEV(TRONQUE(MOD(ENT(J4*100)/100;1)*100);Tableau1;2;FAUX)
0
Mike-31 Messages postés 18347 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 25 novembre 2024 5 104
15 juil. 2015 à 22:19
Re,

TRONQUE avec une RECHERCHEV c'est possible mais dans ta matrice comment sont les valeurs recherchées
tu devrais mettre à notre disposition un bout de ton fichier anonymisé à joindre à partir de ce lien
https://www.cjoint.com/

0
Voici le lien vers mon fichier: http://www.cjoint.com/c/EGpuVJ3e73Y

Attention la formule risque de vous faire saigner des yeux.

C'est préliminaire et il reste probablement quelques erreurs grammaticales d'accord mais bref, vous entrez un montant <1 milliard dans la case jaune et la formule convertit le nombre en lettre dans la case rouge.

Essayez d'entrer le nombre "100000.01" dans la case jaune et vous verrez un premier problème apparaître.

Merci pour votre aide!
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
16 juil. 2015 à 02:00
Bonjour,

Pour éviter les problèmes d'imprécision issus de la représentation binaire des nombres, tu peux remplacer les formules numériques par des formules travaillant sur des chaînes de caractères pour la partie décimale de ton nombre.
Ainsi, ton TRONQUE((J4-TRONQUE(J4))*100) deviendra --DROITE(TEXTE(D4;"#,00");NBCAR(TEXTE(D4;"#,00"))-TROUVE(",";TEXTE(D4;"#,00"))).
Quand tu travailles sur la partie entière de ton nombre, tu peux garder tes formules numériques.

au bout du compte tu auras :
SI(D4>=1000000000;"ERREUR VALEUR TROP GRANDE";SI(TRONQUE(D4/1000000)=0;"";RECHERCHEV(TRONQUE(D4/1000000);Tableau1;2;FAUX)&SI(ET(D4/100000000-ENT(D4/100000000)=0;D4/1000000<>100);"S";"")&SI(TRONQUE(D4/1000000)<2;" MILLION";" MILLIONS"))&SI(TRONQUE(DROITE(TRONQUE(D4/1000);3))=0;"";" "&RECHERCHEV(TRONQUE(DROITE(TRONQUE(D4/1000);3));Tableau1;2;FAUX)&" MILLE")&SI(TRONQUE(DROITE(TRONQUE(D4);3))=0;"";" "&RECHERCHEV(TRONQUE(DROITE(TRONQUE(D4);3));Tableau1;2;FAUX))&SI((--DROITE(TEXTE(D4;"#,00");NBCAR(TEXTE(D4;"#,00"))-TROUVE(",";TEXTE(D4;"#,00")))*100)=0;"";" ET "&RECHERCHEV(--DROITE(TEXTE(D4;"#,00");NBCAR(TEXTE(D4;"#,00"))-TROUVE(",";TEXTE(D4;"#,00")));Tableau1;2;FAUX)))


cordialement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 240
16 juil. 2015 à 07:14
Bonjour,

avec 0.01 en D4, =DROITE(TEXTE(D4;"#,00")) me ramène 0 chez moi JvDo.

ARRONDI((MOD(D4;1))*100;0) a l'air de fonctionner :
=SI(D4>=1000000000;"ERREUR VALEUR TROP GRANDE";SI(TRONQUE(D4/1000000)=0;"";RECHERCHEV(TRONQUE(D4/1000000);Tableau1;2;FAUX)&SI(ET(D4/100000000-ENT(D4/100000000)=0;D4/1000000<>100);"S";"")&SI(TRONQUE(D4/1000000)<2;" MILLION";" MILLIONS"))&SI(TRONQUE(DROITE(TRONQUE(D4/1000);3))=0;"";" "&RECHERCHEV(TRONQUE(DROITE(TRONQUE(D4/1000);3));Tableau1;2;FAUX)&" MILLE")&SI(TRONQUE(DROITE(TRONQUE(D4);3))=0;"";" "&RECHERCHEV(TRONQUE(DROITE(TRONQUE(D4);3));Tableau1;2;FAUX))&SI(ARRONDI((MOD(D4;1))*100;0)=0;"";" ET "&RECHERCHEV(ARRONDI((MOD(D4;1))*100;0);Tableau1;2;FAUX)))

eric
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
16 juil. 2015 à 10:39
Bonjour eriiic,

Surprenant......

Si tu as le temps de mettre un fichier avec l'anomalie, je suis preneur.

Sinon, ARRONDI(MOD()) fonctionne très bien aussi.

Cordialement
0
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 240
16 juil. 2015 à 20:03
Salut JvDo,

Laisse tomber, je n'avais pas suffisamment analysé ce matin pourquoi ta formule ne fonctionnait pas chez moi.
En fait mon séparateur décimal est le point. Ceci explique cela :-)
Les TROUVE(",";...) ne m'ont pas sautés au yeux.
Désolé pour la suée, ta formule est correcte même chez moi ;-)
eric
0
tontong Messages postés 2567 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 20 novembre 2024 1 059
16 juil. 2015 à 11:22
Bonjour à tous,
Une bidouille remédie à certaines erreurs:
=TRONQUE((D8+0,0001-TRONQUE(D8))*100)
Pour l' orthographe " quarante" en urgence, et pour le reste voir un très bon condensé sur cette page:
http://olivier.miakinen.free.fr/vrac/nombres.php#lettres_cent
0
Excellent! J'ai pu régler mon problème avec ARRONDI(MOD()). Merci pour toutes vos réponses rapides et vive la France!
0