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

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

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

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

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

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

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

Из числа 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 (три цифровых разряда в дробной и целой частях). Поменять местами дробную и целую части числа...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Timophiy
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
01.04.2014, 21:30     Преобразовать double в два int: целую и дробную части #2
Тоесть надо вывести целое число после и перед запятой
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,181
Завершенные тесты: 1
01.04.2014, 21:32     Преобразовать double в два int: целую и дробную части #3
C++
1
2
3
4
double s=1.234;
int celaya,drobnaya;
celaya=(int)s;
drobnaya=int((s-celaya)*1000.0);// получим 3 цифры дробной части
Timophiy
0 / 0 / 0
Регистрация: 31.03.2014
Сообщений: 7
01.04.2014, 21:38     Преобразовать double в два int: целую и дробную части #4
Всё гараздо проше
float b=9.6;
a=int b(9);
printf("%0.1f",b(6))
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
01.04.2014, 21:42     Преобразовать double в два int: целую и дробную части #5
Цитата Сообщение от Timophiy Посмотреть сообщение
C++
1
a=int b(9);
Что за магия такая? О_о
IrineK
Заблокирован
02.04.2014, 02:15     Преобразовать double в два int: целую и дробную части #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 байта чаще всего, но - не всегда.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
02.04.2014, 11:44     Преобразовать double в два int: целую и дробную части #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Всё придумано до нас: http://www.cplusplus.com/reference/cmath/modf/
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2014, 19:14     Преобразовать double в два int: целую и дробную части
Еще ссылки по теме:

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

Разделить число на дробную и целую часть - C++
как можно разделить число на дробную и целую часть void main() { long a1; // a1 = целая часть числла double a; // а число ...

Скольки бит выделяется в float и double под целую часть? - C++
Подскажите пожалуйста, сколько бит выделяется в float и double под целую часть?

error C2664: InputMatrixCurrent: невозможно преобразовать параметр 1 из 'int [5][5]' в 'int' - C++
Помогите поправить код, а то выдаёт ошибки #include &quot;stdafx.h&quot; #include &quot;iostream&quot; using namespace std; void...

выдаёт error C2440: =: невозможно преобразовать 'int' в 'int [100] - C++
Ввести информацию об абонентах телефонной станции: фамилия, телефон, улица. Распечатать список абонентов 65-й АТС, проживающих на улице...


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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
02.04.2014, 19:14     Преобразовать double в два int: целую и дробную части #8
Цитата Сообщение от Tulosba Посмотреть сообщение
Всё придумано до нас
И чего мы здесь корячимся?
Yandex
Объявления
02.04.2014, 19:14     Преобразовать double в два int: целую и дробную части
Ответ Создать тему
Опции темы

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