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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 5.00
snakext
 Аватар для snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
14.12.2010, 13:48     Разбить число типа double на 2 числа #1
Добрый день!
Попалась мне такая задача - есть 2 интовые переменные, есть число double. Их нужно сложить таким образом : к 1-му интовому прибавляется целая часть double, ко 2-му - дробная.
С целой частью в принципе понятно, просто присвоить double к переменной int, дробная часть сама "обрубится", а вот как выделить только дробную часть ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 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
 Аватар для snakext
6 / 6 / 1
Регистрация: 08.06.2010
Сообщений: 35
14.12.2010, 14:05  [ТС]     Разбить число типа double на 2 числа #3
А для разных чисел ? Допустим я ввожу этот double с клавиатуры и не знаю сколько у него знаков после запятой ?
deadlock
 Аватар для deadlock
372 / 351 / 7
Регистрация: 14.12.2010
Сообщений: 1,265
14.12.2010, 14:16     Разбить число типа double на 2 числа #4
Цитата Сообщение от snakext Посмотреть сообщение
А для разных чисел ? Допустим я ввожу этот double с клавиатуры и не знаю сколько у него знаков после запятой ?
так же и пользуешься modf(), она разделения целой и дробной частей вплоть до long double годится
snakext
 Аватар для 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
 Аватар для deadlock
372 / 351 / 7
Регистрация: 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 числа
Ответ Создать тему
Опции темы

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