Beispiel #1
0
        private static string MilesToFraction(this float milesFloat)
        {
            const int fractionsCount = 8;

            bool IsMileFraction(int Frac)
            {
                const float epsilon   = 0.01f; //in miles
                int         mileParts = Mathf.RoundToInt(milesFloat * (float)Frac);

                return((Mathf.Abs((float)Frac * milesFloat - (float)mileParts) < epsilon) && (mileParts != 0));
            }

            string MileFraction(int Frac)
            {
                int mileParts = Mathf.RoundToInt(milesFloat * (float)Frac);

                if (Frac == 1)
                {
                    return(mileParts.ToString());
                }
                else
                {
                    return(mileParts.ToString() + "/" + Frac.ToString());
                }
            }

            //First try some nice fractions of a mile: 1/2, 1/3, 1/4 ... 1/8
            for (int i = 1; i <= fractionsCount; i++)
            {
                if (IsMileFraction(i))
                {
                    return(MileFraction(i));
                }
            }
            return("");
        }