C++. использую printf через макрос _stprintf (чтобы юникод и анси компилить), необходимо распечатать double. проблемы нет - _stprintf(buff, _TEXT("%f"), value), но эта чудо-функция печатает 6 нулей после запятой, при варианте %.Nf можно отпечатать N символов после запятой, но мне надо что-то аналога FloatToString в Deplhi - чтобы после запятой печаталось столько знаков, сколько их реально есть. Вариант с %lg обрезает знаки после запятой на свое усмотрение, а иногда делает "Ё" вариант числа со степенью (что совсем не к месту). Конечно, можно отпечатать как %.31f а далее прокатиться по строке и отрезать лишние нули, но я так сделать не могу, т.к. слишном много где код придется править Скажите, какой самый простой вариант отпечатать реальное число знаков после запятой функцией printf ? p.s. Пока мысли идут в сторону перекрытия макроса _stprintf и ручного отрезания нулей.
Codeblight Если параметр является float, то формат не должен содержать суффикс l. Чтобы этого избежать достаточно задать значение точности побольше (больше максимальной степени параметра): Код (Text): %.5g Правда, если степень слишком большая, в конце появятся мусорные значения из-за неточности FPU.
Почему тогда в начале было так? Что значит "не помогло"? Всё ещё выводится E нотация? - повысь точность. Слишком много "мусора" после запятой? - понизь точность. Не ленись экспериментировать.