Форматирование Е в строку на Linux
От: vit0s Австрия  
Дата: 13.02.13 10:15
Оценка:
Здравствуйте,

Форматируем экспоненту в строку на С++, под Win и под Linux.
На Windows по-умолчанию Е имеет 3 цифры (например, "5е+003"), а на Linux — 2 цифры (например, "5е+03").

Скажите, пожалуйста, есть ли какой-то способ сделать так чтобы использовалось одинаковое количество цифр в результате? Имею ввиду, что не проводить операции с уже отформатированной строкой, а при форматировании указать количество цифр по-умолчанию для экспоненты.

Для Win и WinCE используется _snprintf_l
Для Linux используется snprintf

Спасибо
Никому не верь — и никто не обманет!
Re: Вроде нашел ответ
От: vit0s Австрия  
Дата: 13.02.13 10:21
Оценка:
Тут же нашел вот это. Попробую
Никому не верь — и никто не обманет!
Re: up
От: vit0s Австрия  
Дата: 18.02.13 15:10
Оценка:
Здравствуйте, 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, что если я форматирую экспоненту, то чтобы он по-умолчанию делал это с тремя цифрами в конце, а не с двумя?
Никому не верь — и никто не обманет!
Re[2]: up
От: watch-maker  
Дата: 18.02.13 16:49
Оценка:
Здравствуйте, vit0s, Вы писали:

V>Есть ли способ указать snprintf'у на Linux, что если я форматирую экспоненту, то чтобы он по-умолчанию делал это с тремя цифрами в конце, а не с двумя?

Можно сделать патч для libc и собраться с нею. Либо можно загрузить собственную реализацию snprintf через механизм LD_PRELOAD.
Но я бы не советовал так делать. Всё же это поведение будет нарушать стандарт, поэтому лучше просто написать свой вариант функции форматирования, в которой предусмотреть требуемый формат вывода, чем изменять поведение стандартной.
Re[3]: up
От: ДимДимыч Украина http://klug.org.ua
Дата: 18.02.13 19:26
Оценка:
Здравствуйте, watch-maker, Вы писали:

WM>Можно сделать патч для libc и собраться с нею. Либо можно загрузить собственную реализацию snprintf через механизм LD_PRELOAD.


Еще можно определить собственные спецификаторы форматирования: http://www.gnu.org/software/libc/manual/html_node/Customizing-Printf.html
Обязательно бахнем! И не раз. Весь мир в труху! Но потом. (ДМБ)
Re: Форматирование Е в строку на Linux
От: DmitryShm Россия  
Дата: 20.02.13 21:57
Оценка:
Здравствуйте, vit0s, Вы писали:

V>Скажите, пожалуйста, есть ли какой-то способ сделать так чтобы использовалось одинаковое количество цифр в результате? Имею ввиду, что не проводить операции с уже отформатированной строкой, а при форматировании указать количество цифр по-умолчанию для экспоненты.


V>Для Win и WinCE используется _snprintf_l

V>Для Linux используется snprintf

Если программа на С++, то вместо snprintf-ов можно попробовать воспользоваться вот этим манипулятором (http://www.cplusplus.com/reference/ios/scientific/).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.