(***************************************************
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.
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
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.
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.
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.
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...
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
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 ...
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.