je voudrais remplacer un fichier par le m=EAme fichier
dans lequel tous les nombres ont =E9t=E9 arrondis =E0 3
chiffres apr=E8s la virgule, l'arrondi =E9tant vers le haut
ou le bas selon celui qui est le plus proche.
Le fichier contient du texte et des nombres diss=E9min=E9s
dans le texte. Je ne peux donc pas utiliser un tableur
et recherche donc une solution du type rechercher/remplacer.
Ya toujours des problemes d'arrondi pour des nombres grands, mais au moins ca reste coherent pour les nombres petits autour de x.xxx5
-- Stéphane
Vincent Lefevre
Dans l'article <46079560$0$19020$, Nicolas George <nicolas$ écrit:
Vincent Lefevre wrote in message <20070326090639$:
-0.235 est tout aussi logique et régulier.
Mathématiquement non, puisque ça brise l'invariance par translation.
Tout dépend de ce que tu entends par "régulier". L'invariance par translation est effectivement brisée, mais on récupère la symétrie (fonction impaire): rnd(-x) = - rnd(x).
Dans l'article <46079560$0$19020$426a74cc@news.free.fr>,
Nicolas George <nicolas$george@salle-s.org> écrit:
Vincent Lefevre wrote in message
<20070326090639$601d@prunille.vinc17.org>:
-0.235 est tout aussi logique et régulier.
Mathématiquement non, puisque ça brise l'invariance par translation.
Tout dépend de ce que tu entends par "régulier". L'invariance par
translation est effectivement brisée, mais on récupère la symétrie
(fonction impaire): rnd(-x) = - rnd(x).
Dans l'article <46079560$0$19020$, Nicolas George <nicolas$ écrit:
Vincent Lefevre wrote in message <20070326090639$:
-0.235 est tout aussi logique et régulier.
Mathématiquement non, puisque ça brise l'invariance par translation.
Tout dépend de ce que tu entends par "régulier". L'invariance par translation est effectivement brisée, mais on récupère la symétrie (fonction impaire): rnd(-x) = - rnd(x).
Ça revient à peu près à la solution que je proposais dans ma réponse à Alain Ketterlin, sauf que je préfère "ties away from zero" pour avoir une fonction impaire.
Ya toujours des problemes d'arrondi pour des nombres grands, mais au moins ca reste coherent pour les nombres petits autour de x.xxx5
Oui, c'est aussi ce que je disais. Une solution pour des nombres plus grands est aussi possible, sans avoir recours à de la multiprécision.
Pour info, voici comment on peut incrémenter chaque nombre (considéré comme entier et sans tenir compte d'un signe éventuel) d'un fichier:
perl -pe 's/(d)(9*)(?!d)/($1+1)."0"x length$2/ge'
Les 0 initiaux éventuels sont conservés (le dernier étant remplacé par un 1 en cas de retenue). Si on ne veut pas les conserver, je pense que la solution suivante doit fonctionner:
Ça revient à peu près à la solution que je proposais dans ma réponse
à Alain Ketterlin, sauf que je préfère "ties away from zero" pour
avoir une fonction impaire.
Ya toujours des problemes d'arrondi pour des nombres grands,
mais au moins ca reste coherent pour les nombres petits autour
de x.xxx5
Oui, c'est aussi ce que je disais. Une solution pour des nombres plus
grands est aussi possible, sans avoir recours à de la multiprécision.
Pour info, voici comment on peut incrémenter chaque nombre (considéré
comme entier et sans tenir compte d'un signe éventuel) d'un fichier:
perl -pe 's/(d)(9*)(?!d)/($1+1)."0"x length$2/ge'
Les 0 initiaux éventuels sont conservés (le dernier étant remplacé par
un 1 en cas de retenue). Si on ne veut pas les conserver, je pense que
la solution suivante doit fonctionner:
Ça revient à peu près à la solution que je proposais dans ma réponse à Alain Ketterlin, sauf que je préfère "ties away from zero" pour avoir une fonction impaire.
Ya toujours des problemes d'arrondi pour des nombres grands, mais au moins ca reste coherent pour les nombres petits autour de x.xxx5
Oui, c'est aussi ce que je disais. Une solution pour des nombres plus grands est aussi possible, sans avoir recours à de la multiprécision.
Pour info, voici comment on peut incrémenter chaque nombre (considéré comme entier et sans tenir compte d'un signe éventuel) d'un fichier:
perl -pe 's/(d)(9*)(?!d)/($1+1)."0"x length$2/ge'
Les 0 initiaux éventuels sont conservés (le dernier étant remplacé par un 1 en cas de retenue). Si on ne veut pas les conserver, je pense que la solution suivante doit fonctionner: