Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
#1

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

25.04.2014, 17:56. Просмотров 484. Ответов 5
Метки нет (Все метки)

Почему вот тут все правильно, то есть 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 минуты
актуально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2014, 17:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в преобразовании строки в double (C++):

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)" - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

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

Ошибка: невозможно преобразовать 'double' в 'double' - C++
Задача алгоритма, мы вводим матрицу А и В матрицу А раскладываем в LU разложение и с его помощью находим обратную матрицу, а после находим...

Ошибка в преобразовании типов - C++
Здравствуйте. Я написал программу, которая преобразует int в char через указатель. Программа работает, но криво. Например при вводе числа...

Ошибка при преобразовании int в fpos_t - C++
Всем привет, ругается на строчке приравнивания int Start_Pos_UnSorted_File; fpos_t position; position = Start_Pos_UnSorted_File; ...

Шаблон класса complex. Ошибка undefined reference to `complex<double>::SetRe(double)' - C++
Есть такой файл complex.h #ifndef COMPLEX_H #define COMPLEX_H template&lt;class Type&gt; class complex{ public: Type Re; Type...

5
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
25.04.2014, 20:14 #2
Какие параметры подаете в main?
Ошибка в преобразовании строки в double
0
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
26.04.2014, 08:38  [ТС] #3
Адреса программы, входного выходного файлов, и два числа.
Я решила проблему - перенесла этот фрагмент кода в начало программы. Хотелось бы знать, как это влияет на процесс, ведь этот параметр, да и остальные, не менялись.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
26.04.2014, 20:00 #4
Цитата Сообщение от Керра Посмотреть сообщение
Хотелось бы знать, как это влияет на процесс, ведь этот параметр, да и остальные, не менялись.
ну так код покажите, мы же не видим что у Вас написано.
Могу предположить, что устанавливаете локаль с другим десятичным разделителем.
0
-=ЮрА=-
Заблокирован
Автор FAQ
26.04.2014, 21:26 #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;
0
MayaNash
1285 / 453 / 47
Регистрация: 24.08.2011
Сообщений: 2,214
27.04.2014, 09:30  [ТС] #6
-=ЮрА=-, это заказ, человеку сказали именно таким вот способом сделать.
0
27.04.2014, 09:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2014, 09:30
Привет! Вот еще темы с ответами:

В функции GetRandChar ошибка в преобразовании char в wchar_t - C++
Ошибка в заставе заключается в преобразовании char в wchar_t. Вот почему он жалуется на GetRandChar, я не пойм. Как исправить? ...

Ошибка с комплексными числами при дискретном преобразовании Фурье - C++
пытаюсь реализовать дискретное преобразование фурье (не быстрое) подскажить в чем ошибка в коде ругается на...

Ошибка этапа исполнения при преобразовании символов в верхний регистр - C++
Доброго времени суток, уважаемые пользователи CyberForum.ru! По какой то причине падает программа, прощу Вашей помощи :) void main()...

Ошибка Error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден - C++
Вот задание. Для произвольного текста (Взятого из файла), содержащего не более 10 строк, в каждой строке не более 80 символов,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.