3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
1

Странный float

02.04.2019, 16:48. Показов 776. Ответов 13
Метки нет (Все метки)

Здравствуйте, при повторном изучении переменных я смотрел их диапазоны и у float 3.4000000000... до -3.4000000000... однако можно брать числа и больше чем 3.4 к примеру 5000.01 и все будет правильно.Какого фига блин это работает?!
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2019, 16:48
Ответы с готовыми решениями:

опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing
#include<stdio.h> #include<stdlib.h> #include<math.h> float f1(float x)/*vira*enie 1*/ ...

Чем отличаются float преобразования (float)var от float(var)
Здравствуйте! Подскажите, чем отличается (float)var от float(var)

Неправильное приведение void* к *float а далее к float
Почему когда привожу void* к int* потом к int то все работает, данные не бьются и работают...

invalid types `float[float]' for array subscript
void SEARCH(float vol, float price, int i) { if (i>N) { if(price>maxprice) ...

13
4633 / 2477 / 1028
Регистрация: 07.02.2019
Сообщений: 6,450
02.04.2019, 16:57 2
это ограничение значения мантиссы
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
02.04.2019, 16:58  [ТС] 3
Можно поподробнее)
0
4633 / 2477 / 1028
Регистрация: 07.02.2019
Сообщений: 6,450
02.04.2019, 17:20 4
warcraft33, роскомнадзор заблокировал поисковики?

Добавлено через 4 минуты
float
1
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
02.04.2019, 17:52  [ТС] 5
zayats80888, толкового ответа я не нашел!

Добавлено через 10 минут
Фишка в том что точность 7 десятичных чисел вроде как.Но почему то 0.111112 это выводит как надо, а вот 1.111112 выведет 1.11111 почему?И за диапазон я не вышел.Если бы было в поиске что то подобное сюда бы я ни писал, но к сожалению в основном пишут что это тип с плавающей запятой!
0
4633 / 2477 / 1028
Регистрация: 07.02.2019
Сообщений: 6,450
02.04.2019, 18:08 6
Цитата Сообщение от warcraft33 Посмотреть сообщение
Но почему то 0.111112 это выводит как надо, а вот 1.111112 выведет 1.11111 почему?
форматирование вывода к теме вопроса в топике не имеет никакого отношения
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
02.04.2019, 18:20  [ТС] 7
zayats80888, причем здесь форматирование вывода речь идет о значении почему я могу ставить числа выше диапазона как это вообще работает!?Ваш ответ "это ограничение значения мантиссы" меня не устроил!Нельзя ли поподробнее расписать хотя бы в 2 предложения или же вы сами не до конца понимаете как оно работает?
0
4633 / 2477 / 1028
Регистрация: 07.02.2019
Сообщений: 6,450
02.04.2019, 18:24 8
Цитата Сообщение от warcraft33 Посмотреть сообщение
причем здесь форматирование вывода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main() {
    double a = 0.111112;
    double b = 1.111112;
    cout << a << endl
        << b << endl
        << setprecision(7) << a << endl
        << setprecision(7) << b << endl;
}
0
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
02.04.2019, 21:47  [ТС] 9
float a = 947483644.5555555, b = 947483642.5555555;
if (a == b)cout << true; Почему результат true
0
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
02.04.2019, 21:55 10
Цитата Сообщение от warcraft33 Посмотреть сообщение
Почему результат true

Нельзя так сравнивать числа с плавающей точкой.
Что бы не задавать таких вопросов, почитайте на досуге Кнута, а именно книжку Seminumerical algorithms.
Раздел что-то типо Floating-point operations или как-то так, точно уже не помню.
Отпадут почти все вопросы.
0
566 / 349 / 132
Регистрация: 15.09.2017
Сообщений: 1,239
02.04.2019, 22:03 11
warcraft33, Посмотрите на вывод, и подумайте над ответом
C++
1
2
3
4
float a = 947483644.5555555, b = 947483642.5555555;
cout.precision(8);
cout << a << ' ' << b << endl;
if (a == b) cout << true;
0
2725 / 1888 / 560
Регистрация: 05.06.2014
Сообщений: 5,504
02.04.2019, 22:54 12
Цитата Сообщение от warcraft33 Посмотреть сообщение
Почему результат true
Потому что число приводится в форму мантисса умножить на два в степени экспонента. А теперь приведи дробь 1/10 к знаменателю равному целой степени двойки. И чтоб числитель был целым числом (подсказка - задача решения не имеет).
0
1362 / 999 / 316
Регистрация: 28.07.2012
Сообщений: 2,764
03.04.2019, 01:09 13
Цитата Сообщение от warcraft33 Посмотреть сообщение
Почему результат true
Потому что вещественных чисел бесконечное множество, а в виде float можно представить максимум https://www.cyberforum.ru/cgi-bin/latex.cgi?2^{32} из них. Это значит, что существует бесконечное число вещественных чисел, не представимых в виде float. Если такое число встретилось, то в этом случае автоматически производится округление до ближайшего (условно ближайшего, алгоритмы округления могут быть разными) представимого.
1
3 / 4 / 3
Регистрация: 23.04.2017
Сообщений: 186
03.04.2019, 10:11  [ТС] 14
Спасибо за помощь) https://www.cyberforum.ru/blogs/18334/blog88.html вот эта статейка помогла разобраться)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2019, 10:11

cannot convert `float' to `float*. Почему так происходит?
всем привет, помогите исправить ошибки... а то голова мало варит уже, а завтра надо сдать уже ...

Конвертация IBM float в IEEE float
Добрый день, Мне необходимо конвертировать IBM float в IEEE float. По этой ссылке...

Ошибка cannot convert 'float' to 'float*'
Здравствуйте, что означает error: cannot convert 'float' to 'float*' for argument '1' to 'int...

Ошибка преобразования float в float*
Выдает ошибку невозможности преобразование /main.cpp/ #include &lt;iostream&gt; #include &quot;gkh.h&quot; int...

ошибка "invalid operands to binary expression ('float*' and 'float')"
начала писать программу и запоролась на первой же функции double atmosphere(double h_geo) { ...

ОШИБКА [Error] cannot convert 'int*' to 'float*' for argument '1' to 'void Syma(float*,int*,int)
Какая то проблема с указателями,незнаю,не хочет щитать суму парних чисел в второй...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.