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

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

Войти
Регистрация
Восстановить пароль
 
kaban4ig
2 / 2 / 0
Регистрация: 14.12.2010
Сообщений: 37
#1

Строковые потоки. Преобразование типов (как сделать чтобы из строки число полностью преобразовывалось в double без потери чисел) - C++

23.05.2013, 08:44. Просмотров 1132. Ответов 4
Метки нет (Все метки)

Всем привет я перевожу string в double следующим образом
C++
1
2
3
4
5
6
7
double fromString(const std::string& s) 
{
  std::istringstream iss(s);
  double res;
  iss >> res;
  return res;
}
Если вызвать функцию для "123.12345" то в double попадут только 6 цифр (123.123), а допустим для "1234.1234567" в double попадёт (1234.12)
C++
1
2
3
4
    
string str="123.12345";
    double d;
    d=fromString(str);
Вопрос: как сделать чтобы из строки число полностью преобразовывалось в double без потери чисел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2013, 08:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строковые потоки. Преобразование типов (как сделать чтобы из строки число полностью преобразовывалось в double без потери чисел) (C++):

Преобразование типов: строки в double - C++
//Дана строка, состоящая из букв, цифр, запятых, точек, знаков ”+” и ”-”. //Вывести подстроку, которая соответствует записи...

Сделать преобразование типов из string в double - C#
Добрый день! Делаю парс из структуры в бд sql server. Есть структура поле типа string, необходимо конвертировать в тип system.double ...

Преобразование из строки в число Double - Java
Как можно выполнить преобразование строки вида '2.023947' к обьекту типа Double в Java1. (Double.parseDouble() не предлагать - он...

Как преобразование GPT в MBR без потери данных - Windows 7
Здравствуйте! Столкнулся с такой проблемой: Ноутбук Samsung NP350V5C-SOKRU. Изначально стояла Windows 8, хотел переустановить на Windows...

Преобразование типов String->Double - C++/CLI WinForms
Есть задача для калькулятора, сосчитать к примеру вот: 10.34+4.9 хочу преобразовать из String (textBox1->Text) в Double ввожу...

Преобразование типов. Откуда берётся double? - C++
Доброго времени суток всем.Объясните кто-нибудь почему компилятор в предупреждениях пишет : "warning C4244: =: преобразование "double" в...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Vourhey
Почетный модератор
6478 / 2253 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.05.2013, 09:10 #2
kaban4ig, как ты узнаешь, что туда попадает? Посмотри в дебаггере, или установи precision для std::cout, если просто на экран выводишь.
-=ЮрА=-
Заблокирован
Автор FAQ
23.05.2013, 09:23 #3
kaban4ig, используй манипуляторы форматирования вывода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
#include <sstream>
#include <iomanip>
#include <iostream>
using namespace std;
 
int main()
{
    double value = 0;
    string input = "123.12345789";
    stringstream ss;
    if(ss<<input)
    if(ss>>setprecision(10)>>value)
        cout<<setprecision(10)<<value<<endl;
    cin.get();
    return 0;
}
Миниатюры
Строковые потоки. Преобразование типов (как сделать чтобы из строки число полностью преобразовывалось в double без потери чисел)  
-=ЮрА=-
Заблокирован
Автор FAQ
23.05.2013, 09:27 #4
Цитата Сообщение от kaban4ig Посмотреть сообщение
Если вызвать функцию для "123.12345" то в double попадут только 6 цифр
- это происходит потому что дефалтом вывод консоли настроен на точность - до 6-ти знаков после запятой. Для большей точности следует "говорить" консоли что хотим больше цифирей.
ЗЫ: setprecision рабоатет до 15 знаков после запятой.
Вот почитай http://www.cyberforum.ru/blogs/34326/blog468.html - там есть ещё способ форматирования в стиле Си - тоже на 15 цифр после зпт
kaban4ig
2 / 2 / 0
Регистрация: 14.12.2010
Сообщений: 37
24.05.2013, 05:56  [ТС] #5
Большое спасибо=)

Добавлено через 15 часов 25 минут
А в чём тут проблема не подскажете ?
C++
1
2
3
4
5
6
7
8
template <typename R>
R fromString(const std::string& s) 
{
  std::istringstream iss(s);
  R res;
  iss >> res;
  return res;
}
Ошибка: error C2783: 'R fromString(const std::string &)' : could not deduce template argument for 'R'
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 05:56
Привет! Вот еще темы с ответами:

Как преобразовать число float в int без потери данных? - C++
Здравствуйте, форумчане. Столкнулась с такой проблемой: для работы программы требуется целое число, но вводится число типа float. Так вот,...

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

Некорректное преобразование double в int (приведение типов) - C++
Не совсем очевидно. https://ideone.com/7P0EhY #include &lt;iostream&gt; #include &lt;math.h&gt; int main() { float y = pow(64, 1.0...

Преобразование типов double в int для задания размерности массива - C++
Объясните, пожалуйста. Не объявляется массив, хотя его размеры объявил как константы. // #ifndef M_PI #define M_PI...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.05.2013, 05:56
Ответ Создать тему
Опции темы

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