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

Преобразование типов данных - C++

Восстановить пароль Регистрация
 
amatorIP
 Аватар для amatorIP
3 / 3 / 0
Регистрация: 22.07.2010
Сообщений: 141
30.12.2010, 21:59     Преобразование типов данных #1
Подскажите как преобразовать double 0.00000000000023 в char 2.3E-13 и обратно?
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2010, 21:59     Преобразование типов данных
Посмотрите здесь:

преобразование типов C++
Преобразование типов C++
C++ Преобразование типов данных в классах
Преобразование типов. C++
Преобразование типов данных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.12.2010, 02:02     Преобразование типов данных #2
amatorIP, в десятичном представлении тип double обеспечивает точность до 10 цифр, а так вот:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>
 
int main(void){
    double d1, d2;
    char buf[BUFSIZ];
    
    d1 = 0.00000000000023;
    sprintf(buf, "%e", d1);
    printf("As string: %s\n", buf);
    d2 = strtod(buf, NULL);
    printf("As double: %e\n", d2);
    
    exit(0);
}
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
31.12.2010, 02:10     Преобразование типов данных #3
char - это целочисленный тип данных размером в 1 байт, используется в основном для хранения одного символа, например, '\n' или 'o'.
если вас интересует ввод/вывод данных в консоль, то экспоненциальное значения, типа 1.125E2, считается нормальным, как и 112.5!
C++
1
2
double d;
cin >> d;
А вот с форматированным выводом можно использовать функцию printf() библиотеки <cstdio>
C++
1
printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
Вывод форматированных данных
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
31.12.2010, 02:25     Преобразование типов данных #4
Цитата Сообщение от Минич Посмотреть сообщение
А вот с форматированным выводом можно использовать функцию printf() библиотеки <cstdio>
а std::scientific из iomanip использовать что мешает?
C++
1
2
3
4
5
6
7
#include <iostream>
#include <iomanip>
    
int main(){
    std::cout << std::scientific << 0.00000000000023 << std::endl;
    return 0;
}
Минич
 Аватар для Минич
66 / 66 / 3
Регистрация: 26.11.2010
Сообщений: 123
31.12.2010, 03:32     Преобразование типов данных #5
easybudda, не знай, возможно мы только учимся
std::fixed из iomanip нужно было упомянуть
вот что я тоже успел нарыскать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using std::cout;
using std::endl;
using std::ios;
int main()
{
   double x = .001234567, y = 1.946e9;
   cout << "Displayed in default format:\n" << x << "\t" << y << "\n";
   cout.setf( ios::scientific, ios::floatfield );
   cout << "Displayed in scientific format:\n" << x << "\t" << y << "\n";
   cout.unsetf( ios::scientific );
   cout << "Displayed in default format after unsetf:\n" << x << "\t" << y << "\n";
   cout.setf( ios::fixed, ios::floatfield );
   cout << "Displayed in fixed format:\n"<< x << "\t" << y << endl;
   system("pause");
   return 0;
}
Добавлено через 13 минут
Статья: Потоки ввода/вывода
Yandex
Объявления
31.12.2010, 03:32     Преобразование типов данных
Ответ Создать тему
Опции темы

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