Форум программистов, компьютерный форум CyberForum.ru

Ошибка в преобразовании строки в double - C++

Восстановить пароль Регистрация
 
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
25.04.2014, 17:56     Ошибка в преобразовании строки в double #1
Почему вот тут все правильно, то есть 5.5 остается 5.5:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
 
void main( int ArgC, char *ArgV[ ] )
{
    char *str = new char[20];
    gets(str);
    _CRT_DOUBLE crt;
    _atodbl(&crt,str);
    std::cout << crt.x << std::endl;
    delete [] str;
    system("pause");
}
А вот тут 5.5 превращается в 5:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
_CRT_DOUBLE for_radius;
    double vradius;
    cout << "ArgV[4]: " << ArgV[4] << endl;
    if ( _atodbl(&for_radius,ArgV[4]) != 0 )
    {
        cerr << "Ошибка № 12. В командной строке "
        "недопустимый формат аргумента командной "
        "строки, задающего радиус.\n";
        vradius = 0;
    }
    else
        vradius = for_radius.x;
    cout << "for_radius.x: " << for_radius.x << endl;
    cout << "vradius: " << vradius << endl;
Какая между ними разница?

Добавлено через 43 минуты
актуально
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
25.04.2014, 20:14     Ошибка в преобразовании строки в double #2
Какие параметры подаете в main?
Ошибка в преобразовании строки в double
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
26.04.2014, 08:38  [ТС]     Ошибка в преобразовании строки в double #3
Адреса программы, входного выходного файлов, и два числа.
Я решила проблему - перенесла этот фрагмент кода в начало программы. Хотелось бы знать, как это влияет на процесс, ведь этот параметр, да и остальные, не менялись.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
26.04.2014, 20:00     Ошибка в преобразовании строки в double #4
Цитата Сообщение от Керра Посмотреть сообщение
Хотелось бы знать, как это влияет на процесс, ведь этот параметр, да и остальные, не менялись.
ну так код покажите, мы же не видим что у Вас написано.
Могу предположить, что устанавливаете локаль с другим десятичным разделителем.
-=ЮрА=-
Заблокирован
Автор FAQ
26.04.2014, 21:26     Ошибка в преобразовании строки в double #5
Цитата Сообщение от Керра Посмотреть сообщение
_CRT_DOUBLE crt;
* * _atodbl(&crt,str);
- что за глупое преобразование?(зачем привязываться к платформе)
кто мешает произвести привычный Си либо С++ ввод самого дабла
C
1
scanf("%lf", &param);
C++
1
cin>>param;
либо если преообразуем из строки
C
1
sscanf(str, "%lf", &param);
C++
1
2
stringstream ss(str);
double param;ss>>param;
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
27.04.2014, 09:30  [ТС]     Ошибка в преобразовании строки в double #6
-=ЮрА=-, это заказ, человеку сказали именно таким вот способом сделать.
Yandex
Объявления
27.04.2014, 09:30     Ошибка в преобразовании строки в double
Ответ Создать тему
Опции темы

Текущее время: 09:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru