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

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

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

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

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

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

Как из 4-х байт, составляющих число типа double, получить это число? C++
C++ В массив типа double записываю целые числа (типа int), но ошибка не вылазиет!
C++ Как разделить переменую типа double на целое и дробное число ?
Можно ли из числа типа double получить 2 числа типа int? C++
C++ Дайте денормализованное число типа double
С++: числа типа double C++
Преобразовать 2 числа int в 1 число float(double) | double int1.int2 C++
C++ Аргумент типа double несовместим с параметром типа double
C++ Проверить, является ли число, записанное в переменную типа Double, иррациональным
C++ Проверить на равенство два числа типа double
Чтение из файла числа типа double C++
Аргумент типа double несовместим с параметром типа double* C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
2846 / 1783 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
14.12.2010, 13:52     Разбить число типа double на 2 числа #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  [ТС]     Разбить число типа double на 2 числа #3
А для разных чисел ? Допустим я ввожу этот double с клавиатуры и не знаю сколько у него знаков после запятой ?
deadlock
375 / 354 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
14.12.2010, 14:16     Разбить число типа double на 2 числа #4
Цитата Сообщение от snakext Посмотреть сообщение
А для разных чисел ? Допустим я ввожу этот double с клавиатуры и не знаю сколько у него знаков после запятой ?
так же и пользуешься modf(), она разделения целой и дробной частей вплоть до long double годится
snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
14.12.2010, 14:20  [ТС]     Разбить число типа double на 2 числа #5
Нет, я имел ввиду, при 3.14 мы умножаем 0.14 на 100. А если ввести 3.1415 ? Нужно будет умножить на 10000. Мне надо опеределить кол-во знаков после запятой, для общей формулы. Получится 10 в степени (кол-во знаков после запятой).
deadlock
375 / 354 / 8
Регистрация: 14.12.2010
Сообщений: 1,265
14.12.2010, 15:16     Разбить число типа double на 2 числа #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-ти.
Yandex
Объявления
14.12.2010, 15:16     Разбить число типа double на 2 числа
Ответ Создать тему
Опции темы

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