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

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

Войти
Регистрация
Восстановить пароль
 
Angeline
36 / 30 / 2
Регистрация: 21.10.2013
Сообщений: 197
#1

Преобразовать double в два int: целую и дробную части - C++

01.04.2014, 21:11. Просмотров 795. Ответов 7
Метки нет (Все метки)

Если найдется добрый человек, который напишет небольшую функцию, которая float поделит на 2 int, целую часть и дробную соответственно, благодарность моя не будет знать границ. С целой частью все просто, а вот как превратить в целое то, что после запятой не соображу. Число получается из программы, так что читать по символу из строки не получится.

PS если долго мучиться, что-нибудь получится, но ведь у кого-нибудь точно найдется велосипед.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 21:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразовать double в два int: целую и дробную части (C++):

Из числа float получить два int-a: целую и дробную части - C++
Всем привет. Как можно из числа float получить два inta. приведу пример: есть 1,45 и 2,397. из первого нужно получить 1 и 45, из второго 2...

Напишите программу, которая получает число типа long double и выводит его целую и дробную части - C++
мое решение #include<stdio.h> #include<math.h> int main() { long double x;// = 23.234; scanf("%Lf", &x); long...

Как преобразовать дробную часть числа типа double в int - C++
Есть дробное число, например Z = 123,456 нужно разбить его на два целых числа int I = 123 int F = 456 как это можно сделать ? ...

Разделение числа на целую и дробную части - C++
Добрый день! Можно ли разделить число например 95.05 на 95 и 05 и как это сделать?

Поменять местами дробную и целую части числа - C++
Дано действительное число R вида nnn. ddd (три цифровых разряда в дробной и целой частях). Поменять местами дробную и целую части числа...

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

7
Timophiy
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
01.04.2014, 21:30 #2
Тоесть надо вывести целое число после и перед запятой
0
zss
Модератор
Эксперт С++
6693 / 6255 / 2084
Регистрация: 18.12.2011
Сообщений: 16,330
Завершенные тесты: 1
01.04.2014, 21:32 #3
C++
1
2
3
4
double s=1.234;
int celaya,drobnaya;
celaya=(int)s;
drobnaya=int((s-celaya)*1000.0);// получим 3 цифры дробной части
0
Timophiy
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
01.04.2014, 21:38 #4
Всё гараздо проше
float b=9.6;
a=int b(9);
printf("%0.1f",b(6))
0
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 592
01.04.2014, 21:42 #5
Цитата Сообщение от Timophiy Посмотреть сообщение
C++
1
a=int b(9);
Что за магия такая? О_о
0
IrineK
Заблокирован
02.04.2014, 02:15 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Angeline Посмотреть сообщение
Число получается из программы, так что читать по символу из строки не получится.
Допустим у нас есть
C++
1
double num = 158679.3 / 22.6666;
т.е. число получается "из программы".

И теперь будем преобразовывать в строки и назад - и получится )

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <iomanip>
#include <sstream>
using namespace std;
 
void SplitDouble (double src, long int &floor_, long int &fraction)
{   floor_ = fraction = 0;
    ostringstream oss;
    istringstream iss;
    string snum, snum1, snum2;
 
    oss << fixed << setprecision(9) << src;
    snum = oss.str();
    int pos = snum.find_first_of (".");
 
    snum1 = snum.substr(0, pos);
    snum2 = snum.substr(pos+1);
    
    iss.str(snum1);         iss >> floor_;
    iss.str("");            iss.clear();
    iss.str(snum2);         iss >> fraction;
}
 
 
int main()
{   double num = 158679.3 / 22.6666;
    long int num1, num2;
    
    num1 = num2 = 0;
    SplitDouble (num, num1, num2);
 
    cout << "Double: " << fixed << setprecision (9) << num << '\n';
    cout << "Floor: " << num1 << '\t' << "Fraction: " << num2;
    
    cin.get();
    return 0;
}
Точность для дробной части выставляем не больше 9, иначе в 4 байта long int не влезет.
int, кстати тоже 4 байта чаще всего, но - не всегда.
1
Tulosba
:)
Эксперт С++
4619 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.04.2014, 11:44 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всё придумано до нас: http://www.cplusplus.com/reference/cmath/modf/
2
IrineK
Заблокирован
02.04.2014, 19:14 #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Всё придумано до нас
И чего мы здесь корячимся?
0
02.04.2014, 19:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 19:14
Привет! Вот еще темы с ответами:

Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR - C++
Столкнулся с проблемой не как не переведу в нормальный вид вот код #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include...

Как из числа типа double сделать int (сохранение целой и дробной части в отдельных целочисленных переменных) - C++
Например есть число double d = 123.4567 Как сделать что бы int i1 = 123; int i2 =4567;

Разбить число на целую и дробную часть - C++
Возможно-ли разбить число x, допустим, это- &quot;3.142&quot;, на целую и дробную часть. Именно чтобы было &quot;3&quot; и &quot;14&quot;, а не &quot;3.000&quot; и &quot;0.142&quot; как на...

Разбить число на целую и дробную часть - C++
Определить равна ли сумма цифр целой части действительного числа сумме такого же количества цифр в дробной части. Привет форумчане! ...


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

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

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