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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти максимальные элементы каждой строки матрицы и просуммировать их http://www.cyberforum.ru/cpp-beginners/thread1157307.html
Помогите, надо найти сумму, всё остальное вроде получилось: #include <iostream> #include <time.h> using namespace std; int main() { setlocale(0, "rus"); srand(time(0)); int matrix; int mass;
C++ Разбиение строки на слова #include <iostream> #include <string> using namespace std; int main() { string str, s1, s2; int i; cout<<"Enter please string!"<<endl; http://www.cyberforum.ru/cpp-beginners/thread1157297.html
Треугольник наибольшего периметра C++
Друзья, никак не могу осилить задачку, заранее благодарю!) Найти три различные точки из заданного множества точек, образующих треугольник наибольшего периметра. (Множество точек задано в пространстве).
C++ Чем отличаются статические поля от не статических?
чем отличаются статические от не статических полей? почему нельзя создать счетчик без статических полей?
C++ Аварийное завершение работы программы http://www.cyberforum.ru/cpp-beginners/thread1157256.html
1)программа работает правильно но когда нажимаю ентер (после этого она должна завершить работу) выбивает Run-Time Check Failure #2 - Stack around the variable 'S' was corrupted. 2)когда я не пишу \0 в конце строки S консоль выводит неправильные буквы которых в строке S не было Заданная строка S. Преобразовать S следующим образом: 1 - удалить из S первое вхождение буквосочетание...
C++ Передача в функцию unsigned char [ ] Заполняю массив unsigned char sizeBuf; for (int i = 0; i < 4; i++){ sizeBuf = (size >> (i * 8)); cout<<sizeBuf; } //cout<<sizeof(sizeBuf); //send to server length of client name Client.send_data_char(sizeBuf); в конце передаю в функцию подробнее

Показать сообщение отдельно
Керра
Модератор
 Аватар для Керра
1270 / 438 / 45
Регистрация: 24.08.2011
Сообщений: 2,123
25.04.2014, 17:56     Ошибка в преобразовании строки в double
Почему вот тут все правильно, то есть 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 минуты
актуально
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru