sFmt.Format(_T("%%.%de"),nDigits-1);
sBuf.Format(_T(sFmt), fValue);
sscanf(sBuf,"%lf",&fValue);
// шаманим-шаманим
sFmt.Format(
_T("%%.%df\t"),
(int)(fabs(fValue)>=pow((double)10,(int)(nDigits-1))?0:
(FLT_MIN>-1+nDigits-floor(fabs(fValue)?-1+nDigits:
log10(fabs(fValue))))));
sBuf.Format(_T(sFmt),fValue);
sItem += sBuf;
Типы переменных:
sItem, sBuf, sFmt -- CString
fValue -- float
nDigits -- int
В принципе, этот кусок выполняется в цикле и на самом деле nDigits выбираются из массива типа aDigits[ix], а fValue в каждой итерации разный, потому что тоже выбран из массива, но это неважно.
Форматирование такое, потому что не хотел, чтобы за конец строки вылезало. Считайте меня Маяковским.
Ответ через трое суток. Не думаю, что кто-то захочет отписаться, но если такие найдутся, то ответ, пожалуйста, прячьте в тэг MORE, чтобы не подсказывать другим потенциальным желающим.
(показать ответ)
Можно ли было сделать проще?