Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

конвертация из char в double и обратно

29K
12 сентября 2007 года
Anemona
8 / / 09.09.2007
Видимо этот вопрос задается уже не раз, но найти на него ответ никак не могу. С конвертацией целого числа в строку и обратно проблем не возникло. А чтобы сконвертироать число с плавающей точкой случайно нет какой-нть стандартной или "не очень" функции? :confused:
можно просто дать ссылочку, направить, так сказать :)
12K
12 сентября 2007 года
lifs
163 / / 06.09.2007
Не совсем понятно. Язык С/С++? Если он, то в строку тот же printf(...), а обратно atof(char *str).
240
12 сентября 2007 года
aks
2.5K / / 14.07.2006
Цитата: lifs
Если он, то в строку тот же printf(...)


Скорее sprintf.
Но это для C.
Для C++ лучше юзать std::ostringstream или boost::lexical_cast

29K
12 сентября 2007 года
Anemona
8 / / 09.09.2007
язык С++, забыла указать :o
проблема в том что мне надо конвертировать числа с точностью до 10 в степени +/- 12, т.е. до миллиардов и миллиардных долей. atoi не подходит, во-первых он только для целых работает, а во-вторых не для длинных целых (уже думала рассматривать отдельно целую и дробную часть).
29K
12 сентября 2007 года
Anemona
8 / / 09.09.2007
Цитата: aks
Скорее sprintf.
Но это для C.
Для C++ лучше юзать std::ostringstream или boost::lexical_cast



можно поподробнее про std::ostringstream или boost::lexical_cast?:)

240
12 сентября 2007 года
aks
2.5K / / 14.07.2006
 
Код:
#include <sstream>
...
double dVar;
...
std::ostringsrteam sstr;
sstr << dVar;
sstr.str();


Если имеется boost тогда можно так:
 
Код:
#include <boost/lexical_cast.hpp>
...
std::string str = boost::lexical_cast<std::string>(dVar);
12K
12 сентября 2007 года
lifs
163 / / 06.09.2007
Если тебе нужно хранить число, имеющее целую часть из 12 знаков и такую же дробную, то лучше это делать по отдельности, например так:
 
Код:
char *s = "123456789012.123456789012";
__int64 x = _atoi64(s);
double y = 0;
if (strchr(s, '.'))
 y = atof(strchr(s, '.'));

если или то, или другое, то вполне подойдет double и функция atof.
29K
15 сентября 2007 года
Anemona
8 / / 09.09.2007
Всех благодарю за помощь ;)
2.0K
18 сентября 2007 года
integral
86 / / 12.11.2005
sprintf(str, "%f", numeric);
Можна использовать все возможности обычного принтфа по форматированию
240
18 сентября 2007 года
aks
2.5K / / 14.07.2006
sprintf уже приводили в качестве примера. Но для C++ следует исспользовать например std::ostringstream
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог