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

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

Войти
Регистрация
Восстановить пароль
 
Cend
2 / 2 / 0
Регистрация: 25.02.2013
Сообщений: 106
#1

Умещение диапазона в float - C++

22.06.2016, 09:50. Просмотров 129. Ответов 1
Метки нет (Все метки)

Задано количество точек n, расположенных через равные интервалы. Необходимо вычислить диапазон float для данного количества точек, так, чтобы шаг был минимально возможный для точности float.
Мои размышления как реализовать через цикл:
Т.к. точность падает линейно, необходимо n раз, начинаю с 0.0 вызвать:
C++
1
2
float val = 0.0f;
for(int i=0;i<n;i++) val = std::nextafter(val, FLT_MAX);
И мы получим величину шага float между значением n и следующим значением:
C++
1
double step = val - std::nextafter(val, FLT_MAX);
Диапазон будет:
C++
1
double width = step*n;
Но нужно реализовать без использования цикла, подскажите как
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2016, 09:50     Умещение диапазона в float
Посмотрите здесь:

C++ Ошибка cannot convert 'float' to 'float*'
C++ float *m=new float[n]
Поле first — целое число, левая граница диапазона, включается в диапазон; поле second — целое число, правая граница диапазона, не включается в диапазо C++
Float C++
invalid types `float[float]' for array subscript C++
c++ string to float C++
cannot convert `float' to `float*. Почему так происходит? C++
C++ float
C++ Не получается исправить ошибку (Вводится диапазон, где 1-ое число-начало диапазона, 2-ое число приращени, 3-е число конец диапазона)
C++ Чем отличаются float преобразования (float)var от float(var)
C++ Ошибка преобразования: значение типа "float *" нельзя присвоить сущности типа "float"
неверное приведение void* к *float а далее к float C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
3021 / 1677 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
22.06.2016, 13:23     Умещение диапазона в float #2
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//Задано количество точек n, расположенных через равные интервалы.
//Необходимо вычислить диапазон float для данного количества точек, так,
//чтобы шаг был минимально возможный для точности float.
///////////////////////////////////////////////////////////////////////////////
#include <cfloat>
#include <cmath>
#include <iomanip>
#include <iostream>
#include <limits>
#include <string>
///////////////////////////////////////////////////////////////////////////////
typedef std::string         T_str;
typedef float               T_float;
typedef unsigned long long  T_int;
///////////////////////////////////////////////////////////////////////////////
T_float     right_num( T_int    n )
{
    return      std::nextafter  (
                                    T_float(),
                                    std::numeric_limits< T_float >::max()
                                )
 
            *   (n - 1);
}
///////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::ios::sync_with_stdio( false );
    T_int  n{};
 
    for(;;)
    {
        for(;;)
        {
            std::cout   <<  "n = ";
            T_str   n_str;
            std::cin    >>  n_str;
 
            try
            {
                n   =   std::stoull( n_str );
                break;
            }
            catch(...)
            {}
        }//for
 
        std::cout   <<  std::setprecision
                            (
                                std::numeric_limits< T_float >::digits10
                            )
 
                    <<  "L = "
                    <<  0
                    <<  std::endl
                    <<  "R = "
                    <<  right_num( n )
                    <<  std::endl
                    <<  std::endl;
    }//for
}
Yandex
Объявления
22.06.2016, 13:23     Умещение диапазона в float
Ответ Создать тему
Опции темы

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