Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
Sylvos
-24 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
1

Как преобразовать дробную часть числа типа double в int

14.06.2011, 13:46. Просмотров 5955. Ответов 10
Метки нет (Все метки)

Есть дробное число, например Z = 123,456
нужно разбить его на два целых числа
int I = 123
int F = 456
как это можно сделать ?
я придумал только
I= Z
F= (Z - I) * 10
но так в F запишется только 4
56 потеряется
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2011, 13:46
Ответы с готовыми решениями:

Преобразовать double в два int: целую и дробную части
Если найдется добрый человек, который напишет небольшую функцию, которая float поделит на 2 int,...

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

Преобразовать дробную часть вещественного десятичного числа без знака в строку
Написать программу преобразования дробной части вещественного десятичного числа без знака в...

В массив типа double записываю целые числа (типа int), но ошибка не вылазиет!
Вот программулька: #include <iostream> using namespace std; #include <conio.h> int main()...

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

10
pito211
186 / 173 / 18
Регистрация: 22.03.2010
Сообщений: 612
14.06.2011, 13:53 2
гуглится за пять секунд
0
diagon
Higher
1940 / 1206 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 13:55 3
У меня что-то такое получилось. Можно еще вытаскивать до нуля, но если будет, например 1.203
то 3 обрежется.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
int main(){
    double d = 123.5;
    int a = d,b;
    d-=a;
    int t=2;  //точность
    while (t--) d*=10;
    b = d;
    std::cout << a << '.' << b;
    return 0;
}
Но из-за кривости вещественных чисел иногда немного не те значения получатся будут, например 12.6 с точностью 2 перекачует в 12.5(9)
0
Sylvos
-24 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
14.06.2011, 14:32  [ТС] 4
что такое b в int a = d,b; ??
0
14.06.2011, 14:32
diagon
Higher
1940 / 1206 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 14:35 5
Будущая дробная часть.
0
OstapBender
587 / 525 / 76
Регистрация: 22.03.2011
Сообщений: 1,585
14.06.2011, 14:42 6
modf
http://www.cplusplus.com/reference/clibrary/cmath/modf/
0
tylix
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 14:45 7
Следующие сообщ. верно )
0
Sylvos
-24 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
14.06.2011, 14:50  [ТС] 8
Цитата Сообщение от tylix Посмотреть сообщение
F = (Z - I) * 1000 тогде не потеряется
а если будет равно не Z = 123,456
а 4,5 будет совсем другое значение не 5 а 500

Добавлено через 1 минуту
Цитата Сообщение от OstapBender Посмотреть сообщение
будет тоже самое что и F= (Z - I) * 10
как мне избавиться от 0
0
tylix
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 14:52 9
Цитата Сообщение от Sylvos Посмотреть сообщение
а если будет равно не Z = 123,456
а 4,5 будет совсем другое значение не 5 а 500

Добавлено через 1 минуту

будет тоже самое что и F= (Z - I) * 10
как мне избавиться от 0
млин че ты паришь. какая разница 5 или 500 это же после точки будет?
при обратной конвертации ты и делить будешь на 1000
0.500 = 0.5

Вопрос в другом где ты собрался это применять?
0
Sylvos
-24 / 7 / 3
Регистрация: 06.04.2011
Сообщений: 85
14.06.2011, 14:58  [ТС] 10
Цитата Сообщение от tylix Посмотреть сообщение
млин че ты паришь. какая разница 5 или 500 это же после точки будет?
при обратной конвертации ты и делить будешь на 1000
0.500 = 0.5

Вопрос в другом где ты собрался это применять?
Создать класс CDecimal - дробное число

Поля:
- int целая часть;
- int дробная часть.

Методы:
- Конструктор по умолчанию;
- Конструкторы преобразования из:
- short;
- bool;
- long;
- int;
- float;
- double;
- char;
- char*.
- Конструктор копирования;
- Установка целой части;
- Установка дробной части;
- Установка целой и дробной частей с параметрами типа int;
- Установка целой и дробной частей с параметром типа double;
- Возврат числа в виде double;
- Возврат целой части;
- Возврат дробной части;
- Возврат числа в виде строки.

Перегрузка:
- +
- -
- *
- /
- +=
- -=
- *=
- /=
- ++ (постфиксный и префиксный)
- -- (постфиксный и префиксный)
- =
0
tylix
68 / 55 / 11
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 15:10 11
У тебя не возникнит проблем с дробной частью равной 500 или 50 или 5
главное что бы учитывалась точность дробной части (сотые, тысячные, или 10000)

главное не проводить арифм. операц. без обр. преобр.
0
14.06.2011, 15:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 15:10

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

Как преобразовать часть массива char в double
есть большой массив char в нем есть несколько элементов которые нужно преобразовать в число типа...

Как взять дробную часть числа и записать в переменную на C++
как взять дробную часть числа и записать в переменную на C++


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

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

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