Кресты / Говнокод #6115 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
CString convertInt2Str(int i_Number, int i_NumDigits)
{
	CString str = "";
	for(int j=1; j<i_NumDigits; j++)
	{
		int digits = (int) pow((float) 10, j);
		
		if(i_Number<digits) str += "0";			
	}	
	CString num;
	num.Format("%d", i_Number);
	return str+num;
}

Adding leading zeros...

Запостил: Aleskey Aleskey, (Updated )

Комментарии (25) RSS

  • Вот такие люди с пеной у рта троллят printf и молятся на cout...
    Ответить
  • как мне нравится строка 11... тянет даже на отдельный говнокод )
    Ответить
    • да тут все тянет на отдельный говнокод. Например префикс "i_" означает входящий аргумент, а не int. В других функциях встречается еще "о_" соответственно.
      Ответить
  • что самое сука характерное - чел умеет пользоваться форматированием строки
    num.Format("%d", i_Number);
    Ответить
    • может он только это и знает:(
      для нуля и отрицательных чисел будет некорректно
      ну и для i_NumDigits > 9
      Ответить
      • Это использовалось для генерации имен файлов: 0000, 0001, 0002, ...
        Ответить
          • Во-первых, почему для 'i_NumDigits' использовано '%u', а для 'i_Number' вдруг '%d'??? Оба имеют тип 'int'.

            Во-вторых, если этот 'CString::Format' полностью поддреживает спецификаторы 'fprintf', то все делается еще проще

            CString num;
            num.Format("%.*d", i_NumDigits, i_Number);
            Ответить
              • Что значит "правильней"? Результат одинаков, а вот что именно "правильней" в данном случае использовать - width или precision - вопрос философский и неоднозначный. Я вот тоже сначала подумал про вариант с width, а потом посозерцал пупок минут с пятнадцать и пришел к выводу, что все-таки идеологически правильней - именно precision.
                Ответить
                  • Да, правильнее. Не надо просто с повседневно-обывательской точки зрения трактовать термины. Спецификация языка четко говорит о том, что значит precision в случае вывода целого числа - precision указывает сколько знаков (как минимум) должна содержать запись числа. Именно поэтому я и считаю precision более правильным вариантом. В случае precision ведущие нули являются частью записи числа. А в случае width - они лишь отдельный заполнитель пустого пространства слева. Как часть записи числа они мне нравятся больше.
                    Ответить
                    • Ок. С int'ом мысль ясна. Допустим тип поменялся на double - за лидирующие нули в целой части precision уже не отвечает. Т.о. функцию precision стал выполнять width. Как это с идеологической точки зрения на Ваш взгляд?
                      Ответить
  • Егорка с недоверием стал рассматривать фотки с моего смартфона.
    Ответить

Добавить комментарий

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8