Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/100: Рейтинг темы: голосов - 100, средняя оценка - 4.97
4 / 4 / 4
Регистрация: 25.03.2013
Сообщений: 140
1

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

29.03.2013, 03:59. Показов 18958. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как разделить переменую типа double на целое и дробное число ?

Добавлено через 23 минуты
Нашол решение :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <windows.h>
using namespace std;
 
 
void main()
{setlocale (LC_ALL,"Russian");
/*double a=0;
cout<<"Введите пожалусто вещёственное число : ";cin>>a;cout<<"\n\n";
int b=(int )a;//Целая часть числа
float c=a-(int )a;//Дробная часть числа
cout<<b<<c;
*/
float k=0;
k=23/100;
cout<<(float)k<<"\n\n";
 
 
 
 
system("pause");}
Но вот беда когда считаю дробную часть из числа , ёё выводит на экран. А вот зделал отдельную переменую (k), и во время выполнения результат не выводится ни в double, ни в float. Просто ноль и все. Подскажите в чом ощибка ?

Добавлено через 6 минут
А вот так считает :
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <windows.h>
using namespace std;
 
 
void main()
{setlocale (LC_ALL,"Russian");
/*double a=0;
cout<<"Введите пожалусто вещёственное число : ";cin>>a;cout<<"\n\n";
int b=(int )a;//Целая часть числа
float c=a-(int )a;//Дробная часть числа
*/
double k=1;
k=k/100;
cout<<(float)k<<"\n\n";
 
 
 
 
system("pause");}
Добавлено через 17 секунд
Но всетаки почему так ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2013, 03:59
Ответы с готовыми решениями:

Разделить дробное число на целое и остаток
Есть дробное число, например 14.4054 Нужно убрать в отдельную переменную целую часть. Типа того:...

Проверить, целое число или дробное
Ввожу в консоль значение 5.5, но ошибка не выдается (а должна). В чем проблема, почему не видит...

Определить, целое число хранится в переменной, или дробное
помогите ребята.я только учу сам с++.наработал свой проект все вроде пока понимаю но мне ужен...

Почему при выводе имею целое число, а не дробное
Здравствуйте. Почему при выводе имею целое число, а не дробное (как заказывали)? #include...

9
Диссидент
Эксперт C
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
29.03.2013, 08:46 2
Цитата Сообщение от Boderman Посмотреть сообщение
Но всетаки почему так ?
Помни! 2/4 = 0
Но 2.0/4 = 0.5
2
4 / 4 / 4
Регистрация: 25.03.2013
Сообщений: 140
29.03.2013, 17:13  [ТС] 3
Цитата Сообщение от Байт Посмотреть сообщение
Помни! 2/4 = 0
Но 2.0/4 = 0.5
Спасибо!
0
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
29.03.2013, 19:56 4
Цитата Сообщение от Boderman Посмотреть сообщение
о вот беда когда считаю дробную часть из числа , ёё выводит на экран. А вот зделал отдельную переменую (k), и во время выполнения результат не выводится ни в double, ни в float.
нифига не понятно, пиши по-русски.
1
Заблокирован
Автор FAQ
30.03.2013, 00:09 5
Boderman, код ниже выделит из частного целую и дробную части
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cmath>
#include <iostream>
using namespace std;
 
int main()
{
    int a = 0;
    int b = 0;
    cout<<"Program which shows parts of a/b"<<endl;
    cout<<"a = ";cin>>a;
    cout<<"b = ";cin>>b;
    double ipart = 0;
    double fpart = modf(1.0*a / b, &ipart);
    cout<<"ipart = "<<ipart<<endl;
    cout<<"fpart = "<<fpart<<endl;
    return 0;
}
Миниатюры
Как разделить переменую типа double на целое и дробное число ?  
2
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
30.03.2013, 00:15 6
а например дабл привести к целому типу и вычесть это приведение из дабл числа нет?

C++
1
2
3
double d=123.45;
int i=static_cast<int>(d);
double res=d-i;
1
-=ЮрА=-
30.03.2013, 00:33
  #7

Не по теме:

Цитата Сообщение от Kins Посмотреть сообщение
это приведение из дабл числа нет?
double имеет целу часть 150Е10 и 05 в десятичном остатке, в инт 150Е10 привести можно без потери данных?Подумай.

1
59 / 58 / 7
Регистрация: 03.02.2013
Сообщений: 167
30.03.2013, 09:43 8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
в инт 150Е10 привести можно без потери данных?Подумай.
А зачем волноваться о потере данных? Важен только результат. Или я чтото не так понял, но всегда так поступал при получении целой и дробной части.
Тотесть:
d=123.45
i=123
res=123.45-123
res=0.45
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
30.03.2013, 10:05 9
Kins, -=ЮрА=- говорит о том, что если в изначальном double лежит число >2^31 (максимальное значение для int32), то в Вашем способе будет переполнение и, как следствие, неверный результат.
1
4 / 4 / 4
Регистрация: 25.03.2013
Сообщений: 140
30.03.2013, 17:18  [ТС] 10
Цитата Сообщение от taras atavin Посмотреть сообщение
нифига не понятно, пиши по-русски.
Суть в том что не помогает не указание типа начальной переменной (К) ни явное преобразование типов !
0
30.03.2013, 17:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2013, 17:18
Помогаю со студенческими работами здесь

Как из 4-х байт, составляющих число типа double, получить это число?
Как из 4-х байт, составляющих число типа double, получить это число? Пример: unsigned char...

Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное число, стоимость одной минуты в гривнах
Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное...

Как проверить вводилось ли число (типа double или float) в консоль
Как проверить вводилось ли число (типа double или float) в консоль?

Как считывать только одно число типа double за один проход
Теперь измените тело цикла так, чтобы он считывал только одно число типа double за один проход....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru