une petite bizarrerie...

You found an error in the program ? Report it here
Post Reply
scorpion7552
Posts: 182
Joined: 2004-02-05 11:57:33
Location: Paris, France

une petite bizarrerie...

Post by scorpion7552 »

Bonjour à tous,

une petite énigme pour les développeurs (Antoine, Soulsnake...)
vous en pensez quoi de ce petit script

Code: Select all

(***************************************************

Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/

[Infos]
Authors=scorpion7552 
Title=testrating
Description=
Site=
Language=EN
Version=1.0
Requires=3.5.0
Comments=
License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
GetInfo=1

[Options]
***************************************************)

program testrating;

//------------------------------------------------------------------------------
//  start here 
//------------------------------------------------------------------------------   
var
  Value : string;
                                             
begin
  value :='8.7';
  setfield(fieldrating, Value);
  showmessage('valeur = '+Value+#13#10+'getfield = '+getfield(fieldrating)+#13#10+'et regardez la note  ...');
end.
Etrange, non ?
antp
Site Admin
Posts: 9629
Joined: 2002-05-30 10:13:07
Location: Brussels
Contact:

Post by antp »

Problème d'arrondi quelque part. C'est une blague classique avec les nombres flottants. Tiens au passage : dans la calculatrice Windows, tu entres 4, tu cliques "Racine carrée", ça te donne 2. Tu fais -2... ça te donne pas 0 comme prévu, mais un nombre très proche de 0 :D

Quand je compile la 4.1.2 sur mon PC il n'y avait pas de bug (et j'ai pas encore tout mis en place pour compiler la 4.2).
Je ne sais pas si c'est dû à une modif dans le code ou à la version compilée chez Soulsnake.
J'avais à l'époque utilisé des Trunc pour passer en nombre entier (la note est en fait stockée en valeur 0-100) mais des Round seraient sans doute plus sûrs pour éviter ce genre d'erreurs.

À moins que ça ne vienne d'ailleurs...
soulsnake
Posts: 756
Joined: 2011-03-14 15:42:20
Location: France

Post by soulsnake »

Coucou!
J'ai eu le temps de regarder vite fait et c'est bien une erreur d'arrondi à cause d'un trunc au lieu d'un round dans le code:
Trunc(value*10) au lieu de Round(value*10) lorsque la note est ramenée sur 100 en entier pour la stocker.
Surement que la valeur 8.7 vaut quelque chose comme 8.699... en float d'où l'erreur du 8.6 au lieu du 8.7 à cause du trunc.
Il semble que j'ai dû faire une modif en 4.2.0 car en 4.1.2.1 (je n'ai pas pu tester avec la 4.1.2.3 pour le moment) je n'ai pas rencontré le problème.
Ce sera corrigé dans la prochaine mise à jour de la 4.2.
Si quelqu'un peut tester si le probleme est présent ou non en 4.1.2.3 se serait cool.

Soulsnake.
scorpion7552
Posts: 182
Joined: 2004-02-05 11:57:33
Location: Paris, France

Post by scorpion7552 »

je me doutais bien que c'était une histoire d'arrondi, mais ce qui me sidère le plus, c'est que la note affichée est 8,5 :??:

ça le fait aussi avec la dernière 4.1.2 que j'avais installée (sans doute la 4.1.2.3)
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

Bonjour à tous,

Chez moi, ça affiche 8.6 aussi bien en 4.2.0 qu'en 4.2.1.3
soulsnake
Posts: 756
Joined: 2011-03-14 15:42:20
Location: France

Post by soulsnake »

Merci pour le feedback.
Donc l'erreur date d'avant la 4.2, c'est bon à savoir.
Tu as vraiment 8,5 scorpion et non 8,6 ?
Si c'est le cas c'est très étrange.

Soulsnake.
scorpion7552
Posts: 182
Joined: 2004-02-05 11:57:33
Location: Paris, France

Post by scorpion7552 »

soulsnake wrote:Tu as vraiment 8,5 scorpion et non 8,6 ?
Si c'est le cas c'est très étrange.
Soulsnake.
oui, je confirme. Je suis le seul ? Pour info je suis sous Linux (Ubuntu) avec l'émulation Wine.
soulsnake
Posts: 756
Joined: 2011-03-14 15:42:20
Location: France

Post by soulsnake »

Il y a peux etre une fonction systeme sous wine qui fonctionne différemment que sous windows.
Peux-être que la fonction FormatFloat('#0.0', 8.69) qui utilise un round sous windows (et retourne 8.7), utilise un trunc sous wine ce qui poserait problème mais là c'est plus une erreur de ma part et plus compliqué à corriger...

Soulsnake.
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

scorpion7552 wrote:... Pour info je suis sous Linux (Ubuntu) avec l'émulation Wine.
Bizarre ... :p ... :D ... je suis sous Xubuntu 12.04 (Kernel ?) et Wine (mais je ne sais plus la version, j'suis pas à la maison pour vérifier)
scorpion7552
Posts: 182
Joined: 2004-02-05 11:57:33
Location: Paris, France

Post by scorpion7552 »

le mystère s'épaissit....
Ça me fait la même chose sous Windows (Vista, même machine, dual boot).
Et si je fais un getfield une fois la fiche validée, il me rend 8.5 :??:
Raoul_Volfoni
Posts: 863
Joined: 2006-08-31 23:58:18

Post by Raoul_Volfoni »

scorpion7552 wrote:Et si je fais un getfield une fois la fiche validée, il me rend 8.5 :??:
J'avais jusqu'alors uniquement exécuté le script et refermé AMC après, mais effectivement, une fois la page du script fermée, j'ai bien 8.5 sur la fiche, alors que le showmessage affiche 8.6 ...
soulsnake
Posts: 756
Joined: 2011-03-14 15:42:20
Location: France

Post by soulsnake »

J'avais pas été jusqu'à aller voir la note sur la fiche non plus.
Effectivement, j'ai bien 8.5 sur la fiche.
En fait l'erreur est dû au meme trunc au lieu d'un round, c'est juste qu'il y a une double erreur de précision.
La premiere fois l'erreur est faite sur une copie du film utilisée pour afficher le résultat des modifications avant validation puis ensuite les modifications sont effectuées à partir de la copie du film sur le film du catalogue d'où le 8.5 sur la fiche suite à la double conversion avec erreur de précision.
Ce problème sera corrigé en 4.2 dans la prochaine mise à jour.

Soulsnake.
scorpion7552
Posts: 182
Joined: 2004-02-05 11:57:33
Location: Paris, France

Post by scorpion7552 »

merci soulsnake.

c'est donc la fin du 1er "round" (ce que je suis drôle ce matin...)

ne vas pas trop loin car j'ai encore quelque chose en magasin (concerne la 4.2).
A tout de suite... ;)
Post Reply