С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987

Сколько разных чисел в промежутке

10.01.2020, 23:39. Показов 2564. Ответов 9

Студворк — интернет-сервис помощи студентам
У нас есть число double, как много значений можно вместить в промежутке от 0.0 на 1.0?)

И что не так в этом коде?
C++
1
2
3
4
5
6
7
8
9
uint64_t count = 0;
    double a = 0.0;
    while (a < 1.0) 
    {
        int64_t b = reinterpret_cast<int64_t&>(a);
        b++;
        a = reinterpret_cast<double&>(b);
        count++;
    }
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2020, 23:39
Ответы с готовыми решениями:

Сколько в промежутке от n до k чисел, все цифры которых равны 1
Сколько в промежутке от n до k чисел, все цифры которых равны 1.

На промежутке неком промежутке, включая начало и конец, найти количество таких чисел, что a[i]>= a[i-1]
Помогите с решением задачи. Условия задачи: на промежутке от 'StartNumber' до 'EndNumber', включая начало и конец, найти количество...

Ввести x с клавиатуры и определить, сколько чисел в промежутке от 1 до 100 делятся без остатка на x, x-1 или x
не могу понять как описать в паскале делятся без остатка на x,х-1,х+1. Одновременно? В цикле от 1 до 100 if (i mod x = 0) and ((i-1)...

9
фрилансер
 Аватар для Алексей1153
6446 / 5642 / 1128
Регистрация: 11.10.2019
Сообщений: 15,008
11.01.2020, 15:22
их там много ) Теоретически - бесконечно много. Но в машинном представлении 1/eps штук

C++
1
2
3
4
5
6
7
8
9
#include <limits>
 
...
    uint64_t count = 0;
    const double e=std::numeric_limits<double>::epsilon();
    for(double a = 0.0; a < 1.0; a+=e)
    {
        count++;
    }
Цитата Сообщение от AndryS1 Посмотреть сообщение
И что не так в этом коде?
он некорректный
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2020, 15:30
Цитата Сообщение от AndryS1 Посмотреть сообщение
У нас есть число double, как много значений можно вместить в промежутке от 0.0 на 1.0?)
У double под число вроде отведено 53 бита, поэтому где-то 2 ^ 53
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.01.2020, 15:30
Цитата Сообщение от Алексей1153 Посмотреть сообщение
a+=e
По моему std::nextafter будет корректнее
правда от 0 до 1 замучаешься считать
1
фрилансер
 Аватар для Алексей1153
6446 / 5642 / 1128
Регистрация: 11.10.2019
Сообщений: 15,008
11.01.2020, 15:45
Лучший ответ Сообщение было отмечено AndryS1 как решение

Решение

zayats80888, ждать долго, это да. В теории:

1/std::numeric_limits<double>::epsilon()== 4503599627370496

однако, для float считается в цикле моментально и совпадает с
1/std::numeric_limits<float>::epsilon()==8 388608

Добавлено через 5 минут
zayats80888, а, то есть значения то разные

C++
1
2
    const float e=std::numeric_limits<float>::epsilon();//1.1920929e-7
    const float e1=std::nextafterf(0.0,1.0);//1.40129846e-45
я почему-то считал, что епсилон - это как раз и есть шаг
1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2020, 15:45
Цитата Сообщение от Алексей1153 Посмотреть сообщение
однако, для float считается в цикле моментально и совпадает с
1/std::numeric_limits<float>::epsilon()==8 388608
Это 2 ^ 23, у float 23 бита под число + знaковый. У double - 2 ^ 52
0
фрилансер
 Аватар для Алексей1153
6446 / 5642 / 1128
Регистрация: 11.10.2019
Сообщений: 15,008
11.01.2020, 15:55
zayats80888, так всё-таки, где я запутался? Требуется пинок в нужную сторону
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.01.2020, 15:59
Цитата Сообщение от Алексей1153 Посмотреть сообщение
то есть значения то разные
да, к тому же они разные для разных чисел

Добавлено через 3 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
std::numeric_limits<float>::epsilon()
это разница между nextafter(1.0f) и 1.0f
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2020, 18:19
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Это 2 ^ 23, у float 23 бита под число + знaковый. У double - 2 ^ 52
Кстати там ещё 10 бит + знак под экспоненту, так что в double поместится 2 ^ (52 + 10) уникальных чисел от нуля до единицы
0
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
11.01.2020, 18:26
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
2 ^ (52 + 10)
минус зарезервированные значения под NAN, inf и -0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2020, 18:26
Помогаю со студенческими работами здесь

Сколько чисел между 1000 и 10000 состоит из нечетных цифр, сколько из разных цифр?
Сколько чисел между 1000 и 10000 состоит из нечетных цифр, сколько из разных цифр?

Сколько разных пятизначных чисел
Сколько разных пятизначных чисел, больших за 20000, можно сложить из цифр 1,2,3,4, если цифры 2,3,4 входят в каждое число по одному разу, а...

Подсчитать, сколько в матрице разных чисел
Нужно подсчитать сколько в матрице разных чисел. Помогите написать

Определите сколько в строке разных чисел
Помогите, пожалуйста. Только простенький код, если можно. Определите сколько в строке разных чисел. Вот например строка ...

посчитать сколько разных чисел в этой таблице
Дано таблицу действительних чисел А. посчитать сколько разных чисел в этой таблице. Например у таблице, которая содержит значение 5, 9,...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru