crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Особенности функции atof
AD
  опции профиля:
сообщение 19.8.2008, 16:27
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


Вчера увидел одну немаловажную особенность С-шной функции atof, о которой хотел всех предупредить.
Ну во-первых, функция переводит строковое значение числа в вещественное число. Особенность функции заключается в том, что этот перевод зависит от locale, которое устанавливается функцией setlocale! Например, если в приложении установлено вот так:
setlocale(LC_ALL, ".ACP");
// тогда
double d = atof("0.4"); // d =0.0
double d1 = atof("0,4"); // d1 =0.4

Т.е. в данной системе знаковым разделителем будет являться запятая.
А если вот так:
setlocale(LC_ALL, 0);
// тогда
double d = atof("0.4"); // d =0.4
double d1 = atof("0,4"); // d1 =0.0


Помните об этой особенности, если пользуетесь подобными функциями (не Qt)! :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
void*
  опции профиля:
сообщение 19.8.2008, 19:14
Сообщение #2


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


AD, это вполне ясное свойство, т.к. в разных странах свои особенности записи вещественных чисел, поэтому и есть зависимость от локали :)

Сообщение отредактировал void* - 19.8.2008, 19:15
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Особенности функции atof   19.8.2008, 16:27
- - void*   AD, это вполне ясное свойство, т.к. в разных стран...   19.8.2008, 19:14
|- - AD   Цитата(void* @ 19.8.2008, 20:14) AD, это ...   19.8.2008, 20:37
- - Litkevich Yuriy   Цитата(void* @ 19.8.2008, 23:14) AD, это ...   20.8.2008, 5:21
- - Tonal   А при чём тут исходный код? Эта функция для преобр...   20.8.2008, 13:30
- - Litkevich Yuriy   Tonal, для случая с переменной передаваемой в эту ...   20.8.2008, 13:39
- - Tonal   Ну так в исходнике можно и напрямую числовым литер...   20.8.2008, 13:57
- - Litkevich Yuriy   Цитата(Tonal @ 20.8.2008, 17:57) А на уро...   20.8.2008, 14:37
|- - Tonal   Цитата(Litkevich Yuriy @ 20.8.2008, 18:37...   21.8.2008, 10:59
|- - AD   Цитата(Tonal @ 21.8.2008, 11:59) Они не б...   21.8.2008, 22:16
- - Tonal   Ещё раз - для ввода пользователя десятичный раздел...   22.8.2008, 11:45
- - niXman   AD, Не подумал бы Спасибо, буду внимателен. Цита...   23.8.2008, 14:03
- - Tonal   Программисту нужно следить за тем, чтобы было удоб...   25.8.2008, 7:21
|- - AD   Покопался в Qt-шных аналогах функции atof! Выя...   26.8.2008, 11:37
- - Litkevich Yuriy   Цитата(AD @ 26.8.2008, 15:37) функция пре...   26.8.2008, 11:44
|- - AD   Цитатавообще я думаю так бы оно и должно бы быть, ...   26.8.2008, 12:04
- - Tonal   И что ты с америкосовской записью будешь делать гд...   26.8.2008, 12:59
|- - AD   Цитата(Tonal @ 26.8.2008, 13:59) И что ты...   26.8.2008, 13:16
- - Andrew Selivanov   А вот std::stringstream (#include <sstream>)...   27.8.2008, 12:37
- - NordWest   Не очень понял всех докладчиков. У меня такая проб...   5.10.2010, 12:52
- - kwisp   Цитата$ locale LANG=ru_RU.utf8 LC_CTYPE=...   5.10.2010, 13:03


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 2:30