653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
1

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

10.01.2020, 23:39. Показов 2110. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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. Одновременно? В цикле от...

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

9
фрилансер
4158 / 3562 / 793
Регистрация: 11.10.2019
Сообщений: 9,594
11.01.2020, 15:22 2
их там много ) Теоретически - бесконечно много. Но в машинном представлении 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
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2020, 15:30 3
Цитата Сообщение от AndryS1 Посмотреть сообщение
У нас есть число double, как много значений можно вместить в промежутке от 0.0 на 1.0?)
У double под число вроде отведено 53 бита, поэтому где-то 2 ^ 53
1
5231 / 2886 / 1207
Регистрация: 07.02.2019
Сообщений: 7,280
11.01.2020, 15:30 4
Цитата Сообщение от Алексей1153 Посмотреть сообщение
a+=e
По моему std::nextafter будет корректнее
правда от 0 до 1 замучаешься считать
1
фрилансер
4158 / 3562 / 793
Регистрация: 11.10.2019
Сообщений: 9,594
11.01.2020, 15:45 5
Лучший ответ Сообщение было отмечено AndryS1 как решение

Решение

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

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

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

Добавлено через 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
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2020, 15:45 6
Цитата Сообщение от Алексей1153 Посмотреть сообщение
однако, для float считается в цикле моментально и совпадает с
1/std::numeric_limits<float>::epsilon()==8388608
Это 2 ^ 23, у float 23 бита под число + знaковый. У double - 2 ^ 52
0
фрилансер
4158 / 3562 / 793
Регистрация: 11.10.2019
Сообщений: 9,594
11.01.2020, 15:55 7
zayats80888, так всё-таки, где я запутался? Требуется пинок в нужную сторону
0
5231 / 2886 / 1207
Регистрация: 07.02.2019
Сообщений: 7,280
11.01.2020, 15:59 8
Цитата Сообщение от Алексей1153 Посмотреть сообщение
то есть значения то разные
да, к тому же они разные для разных чисел

Добавлено через 3 минуты
Цитата Сообщение от Алексей1153 Посмотреть сообщение
std::numeric_limits<float>::epsilon()
это разница между nextafter(1.0f) и 1.0f
0
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
11.01.2020, 18:19 9
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Это 2 ^ 23, у float 23 бита под число + знaковый. У double - 2 ^ 52
Кстати там ещё 10 бит + знак под экспоненту, так что в double поместится 2 ^ (52 + 10) уникальных чисел от нуля до единицы
0
5231 / 2886 / 1207
Регистрация: 07.02.2019
Сообщений: 7,280
11.01.2020, 18:26 10
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
2 ^ (52 + 10)
минус зарезервированные значения под NAN, inf и -0
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.01.2020, 18:26
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru