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

Определить целое число или нет - C++

Восстановить пароль Регистрация
 
OlegOl
1 / 1 / 0
Регистрация: 28.01.2013
Сообщений: 42
26.05.2013, 11:58     Определить целое число или нет #1
Необходимо определить, является ли число целым или нет.

В цикле значение переменной изменяется с шагом 0.0001
И, допустим, если переменная примет значение a=12.00001, то её можно считать целой.

Пересмотрел кучу форумов, но ни один из методов у меня не работает.

Один из методов, который я нашел.
Суть программы, думаю, понятна.
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
...
m+=0.0001;
        k=m*1.609344;
        //cout<<m<<"\t "<<k<<"\n";
        
        if((m - floor( m )) == 0)
            cout<<m<<"\t "<<k<<"\n";
 
        
        if((k - floor( k )) == 0)
            cout<<m<<"\t "<<k<<"\n";
...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.05.2013, 11:58     Определить целое число или нет
Посмотрите здесь:

C++ Как определить целое число или нет
C++ Передать в функцию целое число. Функция заменяет его на ближайшее простое число, которое больше или меньше исходного. Вернуться в main( ) и распечатат
C++ Определить, четное число или нет
Определить, является ли заданное целое число четным или нечетным C++
C++ Составить функцию, которая, получив целое число определяет, уменьшается ли оно в целое число раз
Разбить число на множители и определить простые они или нет C++
Определить, простое число или нет C++
C++ Ввести произвольное целое положительное число. Определить число с обратным порядком цифр заданного числа

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
26.05.2013, 12:35     Определить целое число или нет #2
Цитата Сообщение от OlegOl Посмотреть сообщение
Необходимо определить, является ли число целым или нет.
В цикле значение переменной изменяется с шагом 0.0001
И, допустим, если переменная примет значение a=12.00001, то её можно считать целой.
[/SPOILER]
а если число 10.1463 и в цикле с шагом 0.0001 это переменная будет возрастать. она тоже примет значение 11.0001. можно число указанное выше считать целым?
Nick Alte
Эксперт С++
1561 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,896
Завершенные тесты: 1
26.05.2013, 12:52     Определить целое число или нет #3
Всё это элементарная математика. Допустим, шаг изменения одна сотая: 0.01, а целыми мы считаем числа, чья дробная часть не превышает шага (например, целыми считаются 12.000001 и 12.00999). Тогда мы просто "сдвигаем" десятичную точку:
C++
1
2
3
4
bool isInteger(double value)
{
    return fmod(value * 100, 100) < 1;
}
Для произвольного шага мы можем обобщить эту функцию таким образом:
C++
1
2
3
4
bool isInteger(double value, double step)
{
    return fmod(value / step, 1 / step) < 1;
}
Если же нас интересует интервал на полшага вправо и на полшага влево от идеально целого числа (то есть, в нашем примере мы отнесём к 12 числа в промежутке от 11.995 до 12.004(9)), то достаточно сдвинуть наше значение на полшага:
C++
1
2
3
4
bool isInteger(double value, double step)
{
    return fmod((value + step/2) / step, 1 / step) < 1;
}
Однако же обычно в таких ситуациях действуют иначе: организуют приращение на целочисленном счётчике, а вещественный параметр вычисляют как функцию от счётчика:
C++
1
2
3
4
5
6
7
8
const double start_value = 5, step = 0.01;
for(unsigned int i = 0; i < 100500; ++i)
{
    const double num = start_value + step*i;
    do_something(num);
    if(i%100 == 0)
        cout << num << endl;
}
Yandex
Объявления
26.05.2013, 12:52     Определить целое число или нет
Ответ Создать тему
Опции темы

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