Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/40: Рейтинг темы: голосов - 40, средняя оценка - 4.58
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
1

Преобразование из string в double

18.03.2016, 19:49. Показов 7763. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот простой пример демонстрирующий данную проблему:
Так работает:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstdlib>
 
int main()
{
    char szOrbits[] = "365.24 29.53";
    char * ptrEnd;
    double d1 = strtod(szOrbits, 0);  // получается 365.24
        system("pause");
        return 0;
}
Так не работает. Точнее работает неверно...
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cstdlib>
using namespace std; // <-- как он влияет на работу strtod или atof и как это обойти?
int main()
{
    char szOrbits[] = "365.24 29.53";
    char * ptrEnd;
    double d1 = strtod(szOrbits, 0);  // получается  365.00
        system("pause");
        return 0;
}
Как это обойти?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2016, 19:49
Ответы с готовыми решениями:

Преобразование Double в string
Допустим у меня есть число double n = 0.0000000000 мне нужно преобразовать его в строку string s =...

Преобразование double в string
Нужно преобразовать double в строку. Знаю про функции ostringstream и stod(), но их проблема в том,...

Преобразование из string в double
Объясните пожалуйста в чем связь между преобразованием данный из string в double и библиотекой...

Преобразование string в double
У меня есть массив типа string, в котором хранятся нецелые числа. Надо отсортировать массив по...

4
88 / 88 / 80
Регистрация: 25.08.2013
Сообщений: 337
18.03.2016, 21:18 2
А у меня работает...
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cstdlib>
using namespace std; // <-- как он влияет на работу strtod или atof и как это обойти?
int main()
{
    char szOrbits[] = "365.24 29.53";
    char * ptrEnd;
    double d1 = strtod(szOrbits, 0);  // получается  365.00
    cout << d1 << endl;
    system("pause");
    return 0;
}
d1 365.24000000000001 double у меня в отладчике
и вывод cout 365.24
MV Studio 2015
0
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
19.03.2016, 07:46  [ТС] 3
yrceus, у меня отладчик такой же... Магия... Может кто объяснить, что происходит?
0
18834 / 9836 / 2405
Регистрация: 30.01.2014
Сообщений: 17,273
19.03.2016, 11:45 4
Лучший ответ Сообщение было отмечено Ника)) как решение

Решение

Ника)), попробуй запустить вот такой пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
    char szOrbits[] = "365,24 29.53";
    char * ptrEnd;
    double d1 = strtod(szOrbits, 0);  // ?
    std::cout << d1;
    system("pause");
    return 0;
}
И вот такой:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstdlib>
#include <clocale>
using namespace std; 
int main()
{
    std::setlocale(LC_NUMERIC, "C");
    char szOrbits[] = "365.24 29.53";
    char * ptrEnd;
    double d1 = strtod(szOrbits, 0);  // ?
    std::cout << d1;
    system("pause");
    return 0;
}
1
43 / 43 / 20
Регистрация: 08.12.2010
Сообщений: 342
19.03.2016, 12:06  [ТС] 5
DrOffset, Мда... второй работает, со старым стандартом пашет =) Чет я сам не догадался так включить =)
0
19.03.2016, 12:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2016, 12:06
Помогаю со студенческими работами здесь

Преобразование long double в string
Здравствуйте уважаемые форум чане! Будьте так добры, подскажите выход из сложившейся ситуации!Как...

Преобразование string в long double
Одним из недостатков C++ является отсутствие для бизнес-программ встроенного типа для денежных...

Преобразование типов string->double c заданной точностью*?
Есть входящая строка 123456 или 00546.. или любая другая. Как преобразовать в тип double, чтобы...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double
Думаю из-за polp #include&lt;iostream&gt; #include&lt;cmath&gt; #include&lt;cstdlib&gt; using namespace std;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru