diff --git a/energyplugin/etm/types/drawcap.cpp b/energyplugin/etm/types/drawcap.cpp index 54abcf4..45bcca0 100644 --- a/energyplugin/etm/types/drawcap.cpp +++ b/energyplugin/etm/types/drawcap.cpp @@ -98,7 +98,9 @@ QList tiragesCoherentsAvecLeTotal(const QList &parPhaseW, double importe += qMax(0.0, w); } const double manque = totalW - somme; - if (manque <= 0) + // Sous le demi-watt, c'est l'arrondi d'une somme de flottants, pas une lecture en retard : la + // corriger changerait des décisions au douzième chiffre sans rien protéger. + if (manque <= 0.5) return tirages; // les phases disent au moins ce que dit le total : rien à corriger for (double &w : tirages) w += importe > 0 ? manque * qMax(0.0, w) / importe : manque / tirages.size(); diff --git a/energyplugin/etm/types/drawcap.h b/energyplugin/etm/types/drawcap.h index b53ad32..6524b72 100644 --- a/energyplugin/etm/types/drawcap.h +++ b/energyplugin/etm/types/drawcap.h @@ -116,9 +116,10 @@ QString drawCapSourceCode(DrawCapSource s); * * \param parPhaseW Tirage lu sur chaque phase, en watts (import > 0, export < 0). * \param totalW Puissance totale du même compteur, en watts (import > 0). - * \return Les mêmes tirages si leur somme atteint le total. Sinon, le MANQUE (total − somme) est - * ajouté aux phases qui importent, au prorata de ce qu'elles lisent — ou à parts égales si - * aucune n'importe. Aucune valeur n'est jamais diminuée. Liste vide : rendue telle quelle. + * \return Les mêmes tirages si leur somme atteint le total, à un demi-watt près. Sinon, le + * MANQUE (total − somme) est ajouté aux phases qui importent, au prorata de ce qu'elles lisent + * — ou à parts égales si aucune n'importe. Aucune valeur n'est jamais diminuée. Liste vide : + * rendue telle quelle. * * \par Pourquoi * Les phases d'un compteur triphasé somment à son total : la phase la plus chargée porte AU MOINS