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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 134, средняя оценка - 4.96
AL
0 / 0 / 0
Регистрация: 20.09.2009
Сообщений: 6
#1

Экспонента и мантисса? - C++

20.09.2009, 19:26. Просмотров 17378. Ответов 14
Метки нет (Все метки)

Люди...помогите пожалуйста.

Объясните по подробнее о мантиссе и экспоненте. Желательно именно на СИ.
Просто вот в универ поступил, и нам дают лекции и практику по СИ(и только). А вот про мантиссу и экспоненту нам не рассказывают, с нас только спрашивают...мол мы должны знать это из школы всё такое. А я не в душе что это, ибо закончил общеобразовательную школу.=)

А конкретно тема у нас была про типы данных, ну знаковые незнаковые, всё такое.

Да, вот ещё, как сделать запись числа через экспоненту???

и ещё вопрос есть, выяснить какая часть откидывается(я сам толком не въезжаю о чем это)
знак_|_мантисса_|||_знак_|_Экспонента

P.S. гуглил и на вики смотрел, и юзал поиск сдесь, но толькового обьяснения не нашел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.09.2009, 19:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Экспонента и мантисса? (C++):

Маленькая мантисса long double - C++
здрасте. Я использую pow (long double, long double) и не смотря на это, меня не удовлетворяет точность (не более 5ти знаков после запятой)....

Порядок и мантисса параметра типа double - C++
Задача из Страуструпа функция печатающая порядок и мантиссу параметра типа double Ну мантисса это вроде бы понятно...

Экспонента - C++
Как вывести число 1234567.89 в форме экспоненты?

Экспонента в степени - C++
Есть цикл, не возводит экспоненту в степень for (i = 0; i < n; i++) { f = 10 * k*(cos(k*x) + sin(k*x))*pow(exp,0.3*k*x); ...

Как записать (экспонента) - C++
ребята, как записать e^2.8*a?

Экспонента в комплексной степени - C++
Подскажите пожалуйста, как вернуть значение экспоненты в комплексной степени? Мне не на выводе нужно подписать эту i, а именно в самой...

14
Norby
65 / 65 / 2
Регистрация: 12.03.2008
Сообщений: 392
20.09.2009, 22:59 #2
Экспонента - это математическая функция, также обозначаемая как exp. А мантисса это дробная часть числа, т.е. то что после десятичной точки.
1
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
20.09.2009, 23:07 #3
Экспонента - это наверное имеется в виду порядок.
http://ru.wikipedia.org/wiki/Экспоненциальная_запись

Не знаю что там тебе нужно делать с мантисой - изучи функции fcvt(), modf().
http://www.codenet.ru/progr/cpp/spru/fcvt.php
http://www.codenet.ru/progr/cpp/sprd/modf.php

Может еще atoi(), strol(), itoa().
2
AL
0 / 0 / 0
Регистрация: 20.09.2009
Сообщений: 6
21.09.2009, 17:59  [ТС] #4
Спасибо, но есть ли информация как в СИ допустим представить число в экспоненциальном виде?? ну тобишь 2.7Е+3 должно выводиться, а не 0.0027...мм??)
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
21.09.2009, 18:13 #5
Флаги форматирования и манипуляторы
1
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
21.09.2009, 18:42 #6
2M128K145: Там вроде только C++ ?

В языке С можно использовать printf( "%e", 0.0027 );
http://www.codenet.ru/progr/cpp/spru/printf.php
2
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
21.09.2009, 19:25 #7
Цитата Сообщение от AL Посмотреть сообщение
как в СИ допустим
пропустил, согласен .

Не по теме:

odip, если не сложно, можешь подбросить
в ту тему запись на С?

0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.09.2009, 04:16 #8
Цитата Сообщение от AL
Спасибо, но есть ли информация как в СИ допустим представить число в экспоненциальном виде??
C
1
    double n = 0.123e+3;
C
1
    double n = 123.0;
одинаково хранятся, то есть, и второе можно вывести в обеих формах, и первое
1
AL
0 / 0 / 0
Регистрация: 20.09.2009
Сообщений: 6
22.09.2009, 07:54  [ТС] #9
Спасибо всем, начинаю немного разбираться^^, буду пробовать!)
0
Teiz
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 6
28.03.2012, 00:14 #10
Доброго времени суток.
Я только начал изучать С++ и мало что понимаю, если написал глупость прошу поправить.
Проблема следующая - нужно изменить вывод экспоненты с 123е+001 на 123е+01.
Заранее спасибо;
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.03.2012, 01:40 #11
Цитата Сообщение от Teiz Посмотреть сообщение
нужно изменить вывод экспоненты с 123е+001
это где такой вывод ?
0
Teiz
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 6
28.03.2012, 02:05 #12
C++
1
2
3
4
5
6
7
8
9
{
    char buff[256];
    ofstream out2;                                                                  
    out2.open(temp2name, ios_base::app | ios_base::out);
    for (int j = 0; j < 3; j++)
    {
        sprintf(buff, "% 13e% 13e% 13e% 13e% 13e% 13e% 13e% 13e% 13e", finalform[5][j], finalform[11][j], finalform[17][j], finalform[23][j], finalform[29][j], finalform[35][j], finalform[41][j], finalform[47][j], finalform[53][j]);
        out2 << buff << endl;
    }
Насколько я понимаю, нужно чтото счудить с 13e. Что именно я не знаю. Пол инета перерыл и люди говорял, мол, это от машины зависит
Результат данного куска кода:
Bash
1
-1.209046e-003-4.001953e-004 9.947106e-005 4.432998e-004 3.715893e-005 7.951631e-004 5.030989e-010 1.053988e-008 1.131979e-004
а нужно получить
Bash
1
-1.209046e-03-4.001953e-04 9.947106e-05 4.432998e-04 3.715893e-05 7.951631e-04 5.030989e-10 1.053988e-08 1.131979e-04
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.03.2012, 02:40 #13
на экспоненту нельзя подействовать
можешь написать функцию, которая работает с полученной строкой, убирая ноль (если там ноль)

и у тебя ещё ошибка - ты думаешь, что пробел в спецификаторе всегда вставляет пробел перед числом, но это не так
пробел вставляется вместо знака плюс
1
Teiz
0 / 0 / 0
Регистрация: 22.01.2012
Сообщений: 6
28.03.2012, 03:01 #14
Про замену плюса на пробел я знаю, код получился большой всего тут не вставиш . Жаль что нельзя изменить экспоненту, справляюсь заменой в блокноте е-0 е+0 на е- е+
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
28.03.2012, 09:57 #15
по идее, там должна быть строка в виде string и stringstream для её составления
а у строки string должен быть метод для замены вхождений, что-то вроде replace()
0
28.03.2012, 09:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.03.2012, 09:57
Привет! Вот еще темы с ответами:

Экспонента в виде суммы сходящегося ряда - C++
Мне нужно построить экспоненту в виде суммы сходящегося ряда. {e}^{x}=\sum_{k=0}^{}\frac{{x}^{k}}{k!} Слаживать до тех пор, пока k-ая...

Как в С++ оформить запись ln (логарифма по основанию е (экспонента) - C++
Здравствуйте, собственно вопрос описан ещё в заголовке, добавить могу только то, что находил несколько вариантов, но они не подходили, на...

Что такое мантисса? - C#
Разбирался с типами float и double, их отличия и нашёл вот что. float - занимает 32 бита, 23 бита на мантиссу, примерное число значащих...

Мантисса числа в пакете Mathematica - Mathematica
Добрый день всем! Помогите, пожалуйста, продвинутые пользователи пакета Mathematica! Проблема такая: Провожу в пакете...


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

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

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