Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366

double и for

28.07.2011, 16:42. Показов 3609. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, объясните пожалуйста почему в операции:
C++
1
for (double y = .1; y != 1.0; y += .1)
получается бесконечный цикл, то есть проскакивает выражение 1.0 == 1.0 - как true

ps я знаю что не корректно использоваться не целочисленный "счетчик", но терзает любопытство почему...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2011, 16:42
Ответы с готовыми решениями:

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double
Думаю из-за polp #include<iostream> #include<cmath> #include<cstdlib> using namespace std; double polp(double af,double...

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)"
#include <iostream> #include <cmath> using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

Ругается на строчку double[] wArray = new double[n];, double[] w = new double[n];
Ругается на строчку double wArray = new double;, double w = new double; Не удаётся преобразовать тип double в int ((( using...

30
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
28.07.2011, 19:32  [ТС]
Студворк — интернет-сервис помощи студентам
а как можно получить кусок памяти в двоичной системе?
то есть хочу получить значение float i = 0.1; как оно лежит прям в памяти.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.07.2011, 19:33
Изъяснись точнее.
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
28.07.2011, 19:36  [ТС]
а лучше покажите на примере как перевести 0.1 в представление float
то есть с мантиссами и прочими
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.07.2011, 19:37
float i = 0.1f;
0
24 / 16 / 3
Регистрация: 19.12.2009
Сообщений: 366
28.07.2011, 19:39  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Изъяснись точнее.
-хочу наглядно увидеть как С++ хранить число 0.1
-и попробовать самому перевести в число, чтобы наглядно понять как оно переходит в то число:
0.10000000000000000555111512312578270211 8158340454101562500000000000000000000000
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
28.07.2011, 19:43
Побитное представление
31 - бит знака
30-23 - порядок
22-0 - мантисса

За подробностями в гугл.

Добавлено через 1 минуту
Битовое представление можешь формировать в unsigned int, а потом присвоить float'y

C++
1
2
unsigned int v1 = ...;
float f = *((float*)&v1);
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
28.07.2011, 19:49
Цитата Сообщение от List2006 Посмотреть сообщение
а как можно получить кусок памяти в двоичной системе?
В виде байтов можно посмотреть.
Преобразованием указателя, например. Ну, это уже показали.
Или с помощью объединения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
union float_bytes{
    float f;
    unsigned char b[sizeof(float)];
};
 
int main()
{
    float_bytes v;
    v.f = 0.1;
    for (unsigned i = 0; i < sizeof(float); ++i)
        std::cout << "0x" << std::hex << (unsigned)v.b[i] << std::endl;
    return 0;
}
Добавлено через 4 минуты
Что касается числа 0.1 то это есть прямо в английской википедии. Русскую не смотрел.
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
28.07.2011, 20:51
Цитата Сообщение от List2006 Посмотреть сообщение
а лучше покажите на примере как перевести 0.1 в представление float
то есть с мантиссами и прочими
Читать стандарт IEEE-754. В сети - дофига материалов.
Перевод дробных - умножением на основание системы счисления. В сети дофига материалов на эту тему.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
28.07.2011, 21:22
Цитата Сообщение от grizlik78 Посмотреть сообщение
Или с помощью объединения
Поздно я это заметил, сначала почти так же по-своему написал
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
#include <stdio.h>
#include <limits.h>
 
#define LLBITS (CHAR_BIT * sizeof(long long))
 
typedef union {
    double dval;
    unsigned long long ival;
} un_t;
 
int main(void){
    un_t un;
    int i;
    
    if ( sizeof(double) != sizeof(long long) ){
        printf("Shit happens!\n");
        return 1;
    }
    
    while ( ( i = LLBITS ) && printf("\nDouble value: ") && scanf("%lf", &un.dval) == 1 )
        while ( i )
            printf("%d", ( un.ival >> --i ) & 1);
    
    return 0;
}
1
2022 / 1621 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
28.07.2011, 23:52
Цитата Сообщение от List2006 Посмотреть сообщение
и попробовать самому перевести в число
1) 0.1 * 2 = 0.2
2) 0.2 * 2 = 0.4
3) 0.4 * 2 = 0.8
4) 0.8 * 2 = 1.6
5) 0.6 * 2 = 1.2
6) 0.2 * 2 = 0.4 // зациклились, повторяется п. 2, получилась периодическая дробь

0.1d = 0.0(0011)b

Т.е. умножаешь на 2 пока не наберётся необходимое количество разрядов либо не получится 0 в мантиссе, например:
1) 0.5 * 2 = 1.0
0.5d = 0.1b
2
 Аватар для kazak
3606 / 2746 / 356
Регистрация: 11.03.2009
Сообщений: 6,318
29.07.2011, 07:33
Неочевидные ответы на простые вопросы
5 раздел.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2011, 07:33

Почему мы пишем double x (double y)? а не через запятую double x,y
почему мы пишем double x (double y)? а не через запятую double x,y

Написать функцию int Search ( double A[], int n , double x), которая находит в массиве double A[n] элемент, значение которого равно x
Написать функцию int Search ( double A, int n , double x), которая находит в массиве double A элемент, значение которого равно x. Функция...

Создать функцию с параметрами GetFunctionValue(double& a, double& b, double& c, double& x)...
Есть код что считает нужно сделать пару манипуляций что у не могу реализовать 1) создать функцию с параметрами...

Реализовать в виде GetFunctionValue(double& a, double& b, double& c, double& x)
Реализовать в виде GetFunctionValue(double&amp; a, double&amp; b, double&amp; c, double&amp; x).

Реализовать в виде GetFunctionValue(double& a, double& b, double& c, double& x)
Реализовать в виде GetFunctionValue(double&amp; a, double&amp; b, double&amp; c, double&amp; x). #include &lt;iostream&gt; #include &lt;conio.h&gt; #pragma...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru