Exemple #1
0
        //------------------------------------
        public static CValeurUnite FromString(string strChaine)
        {
            List <CValeurUnite> valeurs = DecomposeChaineFormattée(strChaine);
            bool bIsNegatif             = false;

            if (valeurs.Count > 0 && valeurs[0].Valeur < 0)
            {
                bIsNegatif        = true;
                valeurs[0].Valeur = -valeurs[0].Valeur;
            }
            CValeurUnite valeurFinale = null;

            foreach (CValeurUnite valeur in valeurs)
            {
                if (valeurFinale == null)
                {
                    valeurFinale = valeur;
                }
                else
                {
                    valeurFinale += valeur;
                }
            }
            if (bIsNegatif)
            {
                valeurFinale.Valeur = -valeurFinale.Valeur;
            }
            return(valeurFinale);
        }
Exemple #2
0
        //------------------------------------
        public static CValeurUnite operator *(CValeurUnite valeur1, CValeurUnite valeur2)
        {
            string strU2 = CUtilUnite.GetUniteHarmonisee(valeur1.Unite, valeur2.Unite);

            if (strU2 != valeur2.Unite)
            {
                valeur2 = valeur2.ConvertTo(strU2);
            }
            string[]     strCompos = CUtilUnite.Developpe(valeur1.Unite + "." + valeur2.Unite);
            string       strUnite  = CUtilUnite.Factorise(strCompos);
            CValeurUnite valeur    = new CValeurUnite(valeur1.Valeur * valeur2.Valeur, strUnite);

            return(valeur);
        }
Exemple #3
0
        //------------------------------------
        public static CValeurUnite operator -(CValeurUnite valeur1, CValeurUnite valeur2)
        {
            CValeurUnite valeur = valeur2.ConvertTo(valeur1.Unite);

            return(new CValeurUnite(valeur1.Valeur - valeur.Valeur, valeur1.Unite, valeur1.Format));
        }
Exemple #4
0
        //------------------------------------
        /// <summary>
        /// Décompose une valeur simple dans les unités de l'unité.
        /// Par exemple, 65 min décomposé en h min donne 1h5min
        /// </summary>
        /// <param name="strUnitesAUtiliser"></param>
        /// <returns></returns>
        public string GetStringDecomposeeValeurSimple(params string[] strUnitesAUtiliser)
        {
            List <string> strUnitesCorrigées = new List <string>();

            foreach (string strUnite in strUnitesAUtiliser)
            {
                if (strUnite.Length > 0)
                {
                    strUnitesCorrigées.Add(strUnite.Trim());
                }
            }
            IUnite unite = CGestionnaireUnites.GetUnite(Unite);

            if (unite == null)
            {
                return(null);
            }
            IClasseUnite classe = unite.Classe;

            if (classe == null)
            {
                return(null);
            }
            List <double?> lstVals         = new List <double?>();
            double         fValeurRestante = ConvertToBase();
            StringBuilder  bl = new StringBuilder();

            CValeurUnite valeurTmp = new CValeurUnite(Math.Abs(fValeurRestante), classe.UniteBase);

            for (int nUnite = 0; nUnite < strUnitesCorrigées.Count; nUnite++)
            {
                string strUnite = strUnitesCorrigées[nUnite];
                string strLib   = strUnite;
                IUnite u        = CGestionnaireUnites.GetUnite(strUnite);
                if (u != null)
                {
                    strLib = u.LibelleCourt;
                }
                valeurTmp = valeurTmp.ConvertTo(strUnite);

                int nVal = (int)valeurTmp.Valeur;
                if (nUnite < strUnitesCorrigées.Count - 1)
                {
                    valeurTmp = valeurTmp - (double)nVal;
                    if (nVal > 0)
                    {
                        bl.Append(nVal + strLib + " ");
                    }
                    if (valeurTmp.Valeur == 0)
                    {
                        break;
                    }
                }
                else
                {
                    if (valeurTmp.Valeur != 0)
                    {
                        bl.Append(Math.Round(valeurTmp.Valeur, 5).ToString() + strLib);
                    }
                }
            }
            if (Valeur < 0)
            {
                bl.Insert(0, "-");
            }
            return(bl.ToString());
        }