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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
RainWolf
0 / 0 / 0
Регистрация: 06.06.2008
Сообщений: 5
#1

Определить, целое число хранится в переменной, или дробное - C++

06.06.2008, 10:16. Просмотров 2971. Ответов 22
Метки нет (Все метки)

помогите ребята.я только учу сам с++.наработал свой проект все вроде пока понимаю но мне ужен маленький кусочек алгоритма.смотрите.скажем есть переменная A,мне нужно чтоб прога определила целое в этой переменной число или дробное и в зависимости от этого шла по разным действиям.

и еще если можете как поставить чтоб в действии деления он делил скажем только до сотых или до тысячных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2008, 10:16     Определить, целое число хранится в переменной, или дробное
Посмотрите здесь:
Проверить, целое число или дробное C++
Почему при выводе имею целое число, а не дробное C++
C++ Как разделить переменую типа double на целое и дробное число ?
Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное число, стоимость одной минуты в гривнах C++
C++ Определить целое число или нет
C++ Как определить целое число или нет
Вводится целое число определить простое оно или нет C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
06.06.2008, 10:48     Определить, целое число хранится в переменной, или дробное #2
чтобы делить до заданной точности используй округления, а вот про есть ли дробная функция - можно в принципе пойти примитивно, конвертнуть в строку и глянуть ,а есть ли разделитель....
RainWolf
0 / 0 / 0
Регистрация: 06.06.2008
Сообщений: 5
06.06.2008, 10:52  [ТС]     Определить, целое число хранится в переменной, или дробное #3
f gj rfrjq kbnht exbimcz&&&

Добавлено через 44 секунды
а по какой литре учишься??
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
06.06.2008, 11:10     Определить, целое число хранится в переменной, или дробное #4
в смысле по какой? мне мсдн и хелпа билдера хватает... а что?
а я что-то не то сказал? сказал так, как бы сам писал прогу...
RainWolf
0 / 0 / 0
Регистрация: 06.06.2008
Сообщений: 5
06.06.2008, 11:19  [ТС]     Определить, целое число хранится в переменной, или дробное #5
нет.мне интереснол по каким книгам ты учишься.я то тоже учусь
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
06.06.2008, 11:20     Определить, целое число хранится в переменной, или дробное #6
честно говоря, когда учился - только книгу по с++ до половины смог осилить, все остальное своим лбом пробивал, хотя ты прав - программист вечно учится...
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
06.06.2008, 17:19     Определить, целое число хранится в переменной, или дробное #7
Если ты говоришь про переменную типа float/double делай так:
float x =51.101;
if( x- (int)x == 0) // целая!
else дробная!

приведение к типу int - отбрасывает дробную часть.если без дробной части значение переменной не меняется,она и была целая.
RainWolf
0 / 0 / 0
Регистрация: 06.06.2008
Сообщений: 5
06.06.2008, 17:30  [ТС]     Определить, целое число хранится в переменной, или дробное #8
спасибо)
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
07.06.2008, 10:17     Определить, целое число хранится в переменной, или дробное #9
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Если ты говоришь про переменную типа float/double делай так:
float x =51.101;
if( x- (int)x == 0) // целая!
else дробная!

приведение к типу int - отбрасывает дробную часть.если без дробной части значение переменной не меняется,она и была целая.
Код
float x = 51.0000001;
if( x- (int)x == 0 )  ..
Удивительно не правда ли ? X - вроде и не целое, а программа показывает, что целое ..)
RainWolf
0 / 0 / 0
Регистрация: 06.06.2008
Сообщений: 5
07.06.2008, 12:53  [ТС]     Определить, целое число хранится в переменной, или дробное #10
а как тода сдалать????
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
07.06.2008, 15:37     Определить, целое число хранится в переменной, или дробное #11
а как тода сдалать????
Для того, чтобы не задавать глупых вопросов, следует сначала разобраться с внутренним форматом представления целых и вещественных чисел. И не надо спрашивать "А что это ?"... "А как это ?"..
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
38
#include <iostream>
 
using namespace std;
 
unsigned long long pow(int base, int expn) {
    
    unsigned long long ret = 1;
 
    for(int i = 0; i < expn; ++i)
        ret *= base;
 
return ret;
}
 
template<class T> void print_bytes(T x) {
 
    int i;
    unsigned long long mask;
    unsigned long long P = *(unsigned long long *)&x;
 
    for(i = 0, mask = pow(2, sizeof(T) * 8 - 1); mask >= 1; ++i, mask /= 2)
        cout<<((P & mask) > 0) ? '1' : '0';
 
    cout<<endl;
}
 
int main(void) {
 
    float x = 4.000000;
 
    print_bytes(x);
 
    int c = 4;
 
    print_bytes(c);
 
return 0;
}
Способ определения - не панацея. Посмотри на формат хранения самих чисел.
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.06.2008, 16:38     Определить, целое число хранится в переменной, или дробное #12
to RainWolf - не парься,все впорядке. во-первых,в примере тип float,имеющий маленькую точность.Используй double - будет лучше.
А данный пример лишь показывает,что представление 51 и 51.0000001 в типе float не отличаются.
to igor_nf - зачем зря человека в сомнения вгоняешь?) ниче удивительного тут,конечно,нет. прогони заодно программу
float x=51.000001.;
if(x==51) ...
Прогнав - увидим,что программа не отличает числа 51.00..1 и 51. В таком случае,отделить дробное от целого вообще не представляется возможным,поскольку в памяти они идентичны.
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
07.06.2008, 16:49     Определить, целое число хранится в переменной, или дробное #13
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
Прогнав - увидим,что программа не отличает числа 51.00..1 и 51. В таком случае,отделить дробное от целого вообще не представляется возможным,поскольку в памяти они идентичны.
Да ну.. В памяти идентичны ? Ты мой вышестоящий пример прогонял ? Смотрел ? Идентичны они в памяти ??? Ты хоть понял, что вообще этот пример показывает ?
XuTPbIu_MuHTAu
Эксперт С++
2224 / 739 / 10
Регистрация: 27.05.2008
Сообщений: 1,508
07.06.2008, 17:33     Определить, целое число хранится в переменной, или дробное #14
но но но.прогнал. Только твой пример не имеет отношения к делу,потому
что при вычитании int из float ,переменную int подвергают преобразованию типов
Попробуй ка так.Увидишь,что в памяти они идентичны.
а то что ты сравнил int и float не говорит ни о чем
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
38
39
40
#include <iostream>
#include <conio.h>
 
using namespace std;
 
unsigned long  pow(int base, int expn) {
    
    unsigned long  ret = 1;
 
    for(int i = 0; i < expn; ++i)
        ret *= base;
 
return ret;
}
 
template<class T> void print_bytes(T x) {
 
    int i;
    unsigned  long mask;
    unsigned  long P = *(unsigned  long *)&x;
 
    for(i = 0, mask = pow(2, sizeof(T) * 8 - 1); mask >= 1; ++i, mask /= 2)
        cout<<((P & mask) > 0) ? '1' : '0';
 
    cout<<endl;
}
 
int main(void) {
 
    float x = 4.0000000;
 
    print_bytes(x);
 
    float c = 4.00000001;
 
    print_bytes(c);
    while(!kbhit() );
 
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2008, 17:35     Определить, целое число хранится в переменной, или дробное
Еще ссылки по теме:
Определить, является ли заданное целое число четным или нечетным C++
C++ Как проверить что в переменной char хранится число?
C++ Присвоить целой переменной day целое значение 1,2, …, 6 или 7
C++ Ввести произвольное целое положительное число. Определить число с обратным порядком цифр заданного числа
C++ Программа при делении выдает целое значение а не дробное

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

Или воспользуйтесь поиском по форуму:
Jafa
50 / 50 / 3
Регистрация: 05.06.2008
Сообщений: 139
07.06.2008, 17:35     Определить, целое число хранится в переменной, или дробное #15
предлагаю использовать ф-цию modf:
C++
1
2
3
4
#include <cmath.h> 
double modf(x,intptr);
double x; значение с плавающей точкой
double *intptr; указатель на хранение целой части
Описание:
Функция modf разрывает значение с плавающей точкой x на
дробную и целую части. Возвращается знаковая дробная часть x. Це-
лая часть хранится в intptr как значение с плавающей точкой.

Пример:
C++
1
2
3
4
#include <cmath.h>
double x,y,n;
x = -14.87654321;
y = modf(x,&n); /* y = -0.87654321, n = -14.0 */
Yandex
Объявления
07.06.2008, 17:35     Определить, целое число хранится в переменной, или дробное
Ответ Создать тему
Опции темы

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