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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 5.00
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
14.06.2011, 13:46     Как преобразовать дробную часть числа типа double в int #1
Есть дробное число, например Z = 123,456
нужно разбить его на два целых числа
int I = 123
int F = 456
как это можно сделать ?
я придумал только
I= Z
F= (Z - I) * 10
но так в F запишется только 4
56 потеряется
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
14.06.2011, 13:53     Как преобразовать дробную часть числа типа double в int #2
гуглится за пять секунд
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 13:55     Как преобразовать дробную часть числа типа double в int #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)
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
14.06.2011, 14:32  [ТС]     Как преобразовать дробную часть числа типа double в int #4
что такое b в int a = d,b; ??
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
14.06.2011, 14:35     Как преобразовать дробную часть числа типа double в int #5
Будущая дробная часть.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
14.06.2011, 14:42     Как преобразовать дробную часть числа типа double в int #6
modf
http://www.cplusplus.com/reference/clibrary/cmath/modf/
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 14:45     Как преобразовать дробную часть числа типа double в int #7
Следующие сообщ. верно )
Sylvos
-25 / 6 / 1
Регистрация: 06.04.2011
Сообщений: 85
14.06.2011, 14:50  [ТС]     Как преобразовать дробную часть числа типа double в int #8
Цитата Сообщение от tylix Посмотреть сообщение
F = (Z - I) * 1000 тогде не потеряется
а если будет равно не Z = 123,456
а 4,5 будет совсем другое значение не 5 а 500

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

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

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

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

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

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

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

Перегрузка:
- +
- -
- *
- /
- +=
- -=
- *=
- /=
- ++ (постфиксный и префиксный)
- -- (постфиксный и префиксный)
- =
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.06.2011, 15:10     Как преобразовать дробную часть числа типа double в int
Еще ссылки по теме:

Преобразовать double в два int: целую и дробную части C++
Как преобразовать все int,float,double в строки LPWSTR, LPCTSTR C++
Преобразовать 2 числа int в 1 число float(double) | double int1.int2 C++

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

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

главное не проводить арифм. операц. без обр. преобр.
Yandex
Объявления
14.06.2011, 15:10     Как преобразовать дробную часть числа типа double в int
Ответ Создать тему
Опции темы

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