Arrondi des secondes extraites (calc)

Bonjour,
Certains arrondis obtenus avec Calc LibreOffice ne sont pas tout à fait justes.
12/05/99 10:10:00 donne 10:09:59 quand on veut extraire l’heure que ce soit avec les fonctions Mod(), Ent() ou Tronque(); seule la fonction Temps()donne 10:10:00.
Ai-je mal paramétré une option? ou est-ce un défaut connu depuis longtemps?
Excel et open office ne présentent pas cet inconvénient.
Quelqu’un connait-il une explication ou une solution?
Merci pour votre aide ou votre éclairage.
(LO version7.0.3.1)

Bonjour @tontong

C’est à mon avis un bug. Il existe des rapports sur ce sujet, voir fdo#127498, fdo#133919

Comme contournement, et comme tu l’indiques, on peut se rabattre vers la fonction TEMPS.

Cordialement

Bonjour,
Merci pour avoir levé mes doutes. Il reste à espérer un correctif prochain.
Cordialement.

Bonjour @tontong, bonjour @PYS

Je rencontre ces approximations même avec la fonction TEMPS.

Je dispose de 4 tables de 4 grandeurs associées à des tampons d’horodatage.

J’essaye de compiler ces 4 grandeurs dans une seule table, avec une fonction de recherche mais les approximations d’arrondis sur le tampon d’horodatage conduisent à ne pas trouver certaines valeurs.

J’ai donc tenté de mettre en forme les tampons d’horodatage de différentes façons : je n’ai réussi que lorsque j’ai recalculé tous les tampons afin que les approximations d’arrondis se retrouvent dans les données où rechercher et dans l’échelle de temps du tableau où recompiler les 4 grandeurs.

Tout cela pour dire que la fonction TEMPS() ne fournit pas un résultat plus précis que les autres méthodes.

J’ai essayé d’utiliser la fonction TEMPS() pour arrondir à la minute avec =ENT(A3)+TEMPS(HEURE(A3);MINUTE(A3);0)A3 contient le tampon d’horodatage à mettre en forme.

J’ai aussi arrondi à la minute avec =ENT(A3*24*60)/24/60

Quand je calcule le pas temporel entre 2 tampons mis en forme, j’obtiens parfois le bon résultat et parfois un résultat approximatif. Encore plus surprenant, les approximations ne se produisent pas au même endroit:

  • Avec la fonction TEMPS(), une erreur est constatée entre 25/05/2021 14:10 et 25/05/2021 14:15, avec un écart de 00:09:59,999 mais pas entre 25/05/2021 14:15 et 25/05/2021 14:20 qui affiche un écart de 00:10:00,000 (ce qui est étonnant en soi car si la valeur prise en compte pour les calculs avec 25/05/2021 14:15 est en fait quelque chose du genre 25/05/2021 14:14,999, nous devrions trouver un écart de 00:10:00,001 avec 25/05/2021 14:20
  • Avec ENT(), une erreur n’est pas constatée entre 25/05/2021 14:10 et 25/05/2021 14:15 mais entre 25/05/2021 14:15 et 25/05/2021 14:20

Et contrairement à ce que j’affirme plus haut,

“je n’ai réussi que lorsque j’ai recalculé tous les tampons”

et en contradiction avec ce que je constate dans le déplacement des erreurs, alors que j’avais utilisé TEMPS() pour mettre en forme le temps dans les tables de données et ENT() pour l’échelle de temps du tableau de recherche, RECHERCHEV(blabla; tableau de données; 2 ;0) retrouve ses petits!!!

Tout cela ne rend pas l’emploi des calculs temporels très fiable.

Une solution serait de convertir les tampons d’horodatage en texte, pour tout ce qui est recherche mais rendrait les calculs temporels hyper-lourds.

Voir le fichier ci-joint : AskLO.ods

Environnement : Windows 10 Famille,version 21H1, build 19043.1023 LO 7.0.6.2

Cordialement, Michel

Re bonjour,

Au lieu d’utiliser ENT() qui arrondit à la partie entière, ARRONDI() limite les incertitudes, en arrondissant à l’entier le plus proche. Mais il faut arrondir à la fois pour calculer les tampons d’horodatage et pour calculer les écarts entre deux tampons.

Mais pour arrondir, il faut être certain de la précision du tampon : heure, minute, seconde, milliseconde…

A suivre…
Michel

Bonjour @mgl

En ne reproduisant pas le problème en partant d’un classeur neuf j’ai constaté que j’utilisais le format [HH]:MM:SS,000.

En appliquant ce même format dans ton classeur il semble qu’on retrouve bien nos 10 minutes…

Cordialement