Bonjour fatahou
Merci pour votre réponse.
Le problème vient en effet de PostgreSQL, pas en lui-même, mais du type de données de la colonne cum_cr_weighted_factor
.
En effet, le type double precision
est inexact ou approché, voir https://www.postgresql.org/docs/current/datatype-numeric.html#DATATYPE-NUMERIC-TABLE et https://dev.mysql.com/doc/refman/5.6/en/numeric-types.html
Je croyais à tort que l'approximation se faisait lorsque les 15 décimales étaient atteintes.
Malheureusement, il y a approximation dans beaucoup de cas, notamment le vôtre, ce qui fait que par ex. 0.7375
peut-être différent de 0.7375
...
Une solution est de changer le type de la colonne pour numeric
.
C'était le cas dans les versions de RosarioSIS avant la 10.
Le type avait été changé en double precision
pour "coller" avec MySQL qui ne propose pas de type numeric
variable.
Voici donc ce qui sera changé dans la version 10.6.1 :
- Pour MySQL: changer
double precision
en numeric(22,16)
dans rosariosis_mysql.sql
- Pour PostgreSQL: (re)changer
double precision
en numeric
dans rosariosis.sql
Dans le script de mise à jour Update.fnc.php
, les champs des tables student_mp_stats
et student_report_card_grades
qui sont concernés verront leur type changé.
@fatahou pourriez-vous s'il vous plaît exécuter ces requêtes SQL sur votre base et confirmer que cela règle bien le problème ?
Vous trouverez les 4 requêtes ici :
https://gitlab.com/francoisjacquet/rosariosis/-/blob/mobile/ProgramFunctions/Update.fnc.php#L958-1020