Форматируем экспоненту в строку на С++, под Win и под Linux.
На Windows по-умолчанию Е имеет 3 цифры (например, "5е+003"), а на Linux — 2 цифры (например, "5е+03").
Скажите, пожалуйста, есть ли какой-то способ сделать так чтобы использовалось одинаковое количество цифр в результате? Имею ввиду, что не проводить операции с уже отформатированной строкой, а при форматировании указать количество цифр по-умолчанию для экспоненты.
Для Win и WinCE используется _snprintf_l
Для Linux используется snprintf
Здравствуйте, vit0s, Вы писали:
V>Здравствуйте,
V>Форматируем экспоненту в строку на С++, под Win и под Linux. V>На Windows по-умолчанию Е имеет 3 цифры (например, "5е+003"), а на Linux — 2 цифры (например, "5е+03").
V>Скажите, пожалуйста, есть ли какой-то способ сделать так чтобы использовалось одинаковое количество цифр в результате? Имею ввиду, что не проводить операции с уже отформатированной строкой, а при форматировании указать количество цифр по-умолчанию для экспоненты.
V>Для Win и WinCE используется _snprintf_l V>Для Linux используется snprintf
V>Спасибо
Вскоре послу публикации этого вопроса я думал, что нашел ответ, о чем и написал тут, но теперь все же взову о помощи еще раз.
Есть ли способ указать snprintf'у на Linux, что если я форматирую экспоненту, то чтобы он по-умолчанию делал это с тремя цифрами в конце, а не с двумя?
Здравствуйте, vit0s, Вы писали:
V>Есть ли способ указать snprintf'у на Linux, что если я форматирую экспоненту, то чтобы он по-умолчанию делал это с тремя цифрами в конце, а не с двумя?
Можно сделать патч для libc и собраться с нею. Либо можно загрузить собственную реализацию snprintf через механизм LD_PRELOAD.
Но я бы не советовал так делать. Всё же это поведение будет нарушать стандарт, поэтому лучше просто написать свой вариант функции форматирования, в которой предусмотреть требуемый формат вывода, чем изменять поведение стандартной.
Здравствуйте, watch-maker, Вы писали:
WM>Можно сделать патч для libc и собраться с нею. Либо можно загрузить собственную реализацию snprintf через механизм LD_PRELOAD.
Здравствуйте, vit0s, Вы писали:
V>Скажите, пожалуйста, есть ли какой-то способ сделать так чтобы использовалось одинаковое количество цифр в результате? Имею ввиду, что не проводить операции с уже отформатированной строкой, а при форматировании указать количество цифр по-умолчанию для экспоненты.
V>Для Win и WinCE используется _snprintf_l V>Для Linux используется snprintf