![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Вчера увидел одну немаловажную особенность С-шной функции atof, о которой хотел всех предупредить.
Ну во-первых, функция переводит строковое значение числа в вещественное число. Особенность функции заключается в том, что этот перевод зависит от locale, которое устанавливается функцией setlocale! Например, если в приложении установлено вот так:
Т.е. в данной системе знаковым разделителем будет являться запятая. А если вот так:
Помните об этой особенности, если пользуетесь подобными функциями (не Qt)! ![]() |
|
|
![]() |
Tonal |
![]()
Сообщение
#2
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Ну так в исходнике можно и напрямую числовым литералом записать.
Для числовых литералов в С/С++ стандарт чётко оговаривает использование точки. Зачем извращаться-то? Да и atof откуда узнает как строку была получена? А на уроке информатики вам ![]() "В компьютерах" десятичный разделитель зависит от требований программы с какой ты работаешь. Есть системы где десятичный разделитель жёстко специфицирован - например исходники распространённых языков программирования, разные среды, отладчики. Там где нужна совместимость и переносимость в текстовом виде. Здесь считается что пользователь должен быть достаточно подготовлен. А есть, наоборот, где зависит от локали - это домашние и офисные приложения, где пользователь должен как можно быстрее и проще включится в работу. А некоторые приложения должны уметь настраиваться. ![]() Например если в генераторе отчётов нельзя настроить десятичный разделитель, то это плохой, не годный генератор. ![]() Сообщение отредактировал Tonal - 20.8.2008, 14:01 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 24.6.2025, 11:49 |