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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
#1

Разбить число типа double на 2 числа - C++

14.12.2010, 13:48. Просмотров 1067. Ответов 5
Метки нет (Все метки)

Добрый день!
Попалась мне такая задача - есть 2 интовые переменные, есть число double. Их нужно сложить таким образом : к 1-му интовому прибавляется целая часть double, ко 2-му - дробная.
С целой частью в принципе понятно, просто присвоить double к переменной int, дробная часть сама "обрубится", а вот как выделить только дробную часть ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2010, 13:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разбить число типа double на 2 числа (C++):

Можно ли из числа типа double получить 2 числа типа int? - C++
Если можно, то напишите пожайлуста название функции или способ.

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

В массив типа double записываю целые числа (типа int), но ошибка не вылазиет! - C++
Вот программулька: #include <iostream> using namespace std; #include <conio.h> int main() { double arr={1,2,3,4,5}; ...

Как из 4-х байт, составляющих число типа double, получить это число? - C++
Как из 4-х байт, составляющих число типа double, получить это число? Пример: unsigned char tmp={63,128,0,0}; // значение double=1.0

Дайте денормализованное число типа double - C++
Нужно для текста, число надо разобрать на мантиссу и порядок и снова собрать.

С++: числа типа double - C++
Всем добрый вечер!:) Товарищи, я - начинающий чайник, прошу вас объяснить мне как работать с типом double. Мне надо написать такую...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
asics
Freelance
Эксперт С++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,841
14.12.2010, 13:52 #2
snakext, modf() тебе в помощь.
C++
1
2
3
4
5
6
7
8
#include <cmath>
#include <iostream>
 
int main()
{
    double x0 = 3.14, d;
    std::cout << modf(x0, &d) * 100;//Множим на 100, зная что после точки две цыфры.
}
snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
14.12.2010, 14:05  [ТС] #3
А для разных чисел ? Допустим я ввожу этот double с клавиатуры и не знаю сколько у него знаков после запятой ?
deadlock
375 / 354 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
14.12.2010, 14:16 #4
Цитата Сообщение от snakext Посмотреть сообщение
А для разных чисел ? Допустим я ввожу этот double с клавиатуры и не знаю сколько у него знаков после запятой ?
так же и пользуешься modf(), она разделения целой и дробной частей вплоть до long double годится
snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
14.12.2010, 14:20  [ТС] #5
Нет, я имел ввиду, при 3.14 мы умножаем 0.14 на 100. А если ввести 3.1415 ? Нужно будет умножить на 10000. Мне надо опеределить кол-во знаков после запятой, для общей формулы. Получится 10 в степени (кол-во знаков после запятой).
deadlock
375 / 354 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
14.12.2010, 15:16 #6
Цитата Сообщение от snakext Посмотреть сообщение
Нет, я имел ввиду, при 3.14 мы умножаем 0.14 на 100. А если ввести 3.1415 ? Нужно будет умножить на 10000. Мне надо опеределить кол-во знаков после запятой, для общей формулы. Получится 10 в степени (кол-во знаков после запятой).
1. проверить полученную с помощью modf дробную часть на ==0 (вдруг целое число ввели);
2. счетчик=0;
2. счетчик++, умножить полученную дробную часть на 10 и вычисляем modf(от_полученного_числа), проверяем выделенную дробную часть - если (==0) - выход, счетчик==1 значит всего один знак после запятой, если !=0 - продолжаем пункт 2 до достижения выделенной дробной части ==0; по окончании счетчик - это как раз степень для 10-ти.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2010, 15:16
Привет! Вот еще темы с ответами:

Аргумент типа double несовместим с параметром типа double* - C++
Функция function должна возвращать количество элементов массива, значение которые превышает значение средне арифметического элементов...

Аргумент типа double несовместим с параметром типа double - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std; #define c 40 #define n 5 double po(double...

Чтение из файла числа типа double - C++
Добрый вечер! Уже долго бьюсь над тем, что у меня слишком маленькая точность считываемого числа... char word; ifstream...

Как разделить переменую типа double на целое и дробное число ? - C++
Как разделить переменую типа double на целое и дробное число ? Добавлено через 23 минуты Нашол решение : #include &lt;iostream&gt; ...


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

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

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