public string Write(int number)
        {
            if (number == 0)
            {
                return(_tensDictionary[number]);
            }

            if (number < 10)
            {
                return(_digitWriter.Write(number));
            }

            if (number >= 10 && number < 20)
            {
                return(_tensDictionary[number]);
            }

            if (number > 99)
            {
                throw new ArgumentOutOfRangeException("number", "Only double digits are allowed.");
            }

            var doubleDigitBase = number - (number % 10);

            return(string.Format("{0} {1}", _tensDictionary[doubleDigitBase], this.Write(number % 10)).Trim());
        }
        public string Write(int number)
        {
            if (number == 0)
            {
                return("");
            }

            int hundredIndex = number / 100;

            if (hundredIndex == 0)
            {
                return(_tensWriter.Write(number));
            }

            string hundredsNumber = string.Format("{0} hundred", _tensWriter.Write(hundredIndex));
            string tensNumber     = _tensWriter.Write(number % 100);

            return(string.IsNullOrEmpty(tensNumber)
                ? hundredsNumber
                : string.Format("{0} and {1}", hundredsNumber, tensNumber).Trim());
        }
예제 #3
0
        public string Write(int number)
        {
            if (number == 0)
            {
                return(string.Empty);
            }

            var writtenNumber = new StringBuilder();

            foreach (var unit in _unitsDictionary.Keys.OrderByDescending(u => u))
            {
                var unitNumber = number / unit;
                if (unitNumber != 0)
                {
                    writtenNumber.Append(_hundredsWriter.Write(unitNumber) + string.Format(" {0} ", _unitsDictionary[unit]));
                }
                number = number % unit;
            }

            return(writtenNumber.ToString().Trim());
        }