Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Cend
2 / 2 / 4
Регистрация: 25.02.2013
Сообщений: 114
#1

Тип данных float - C++

23.06.2013, 14:44. Просмотров 2237. Ответов 13
Метки нет (Все метки)

1) Какое масимальное целое может содержать float?
2) Точность дробной части у float постоянна, или зафисит от целой части?
Буду благодарен за прямые ответы
http://www.cyberforum.ru/cpp-beginners/thread411079.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 14:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Тип данных float (C++):

Какой тип данных лучше подойдет для приложения, которое делит числа int или float?
Ответ написал int Хотя нутром чую, что float

Тип float в массиве
Доброго времени суток! Объявил float a ; Но при выводе консоль выводит...

Тип памяти переменной float
Доброго время суток всем! помоги найти ответ на вопрос, что за тип памяти...

Тип float нельзя сдвигать?
Пытаюсь сделать так: float data; ... f.open("primerus_bit.txt",...

Почему 5/9=0, если тип float?
Объектно-ориентированное программирование в С++ Лафоре Р. 3 глава, упрожнение...

13
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 14:56 #2
1.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <iomanip>
#include <limits>
 
using namespace std;
 
int main()
{
    cout << setprecision( 50 ) << numeric_limits<float>::max() << endl;
    return 0;
}
Добавлено через 1 минуту
2.:
Цитата Сообщение от Cend Посмотреть сообщение
или зафисит от целой части?
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
23.06.2013, 15:08 #3
1. float не содержит целых чисел
2. постоянна, 6-7 десятичных разрядов.
0
Kuzia domovenok
2208 / 1977 / 440
Регистрация: 25.03.2012
Сообщений: 6,936
Записей в блоге: 1
23.06.2013, 15:22 #4
Цитата Сообщение от vua72 Посмотреть сообщение
2. постоянна, 6-7 десятичных разрядов.
не говори так никому больше
1
Cend
2 / 2 / 4
Регистрация: 25.02.2013
Сообщений: 114
23.06.2013, 15:22  [ТС] #5
lazybiz, пробовал вручную инкрементировать, у меня выводится чушь, значение уходит за пределы uint32_t, не знаю почему...
Цитата Сообщение от vua72 Посмотреть сообщение
1. float не содержит целых чисел.
Ну как не содержит?
C++
1
float a = 26.0;
Вот a содержит целое число 26.
C++
1
float a = 26.11;
a содержит 26 целых, 11 сотых.
И всётаки, какова максимальная величина целой части, которую можно поместить во float?
И насчет точности я не понял. vua72, ваш ответ противоречит ответу lazybiz
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 15:27 #6
Цитата Сообщение от vua72 Посмотреть сообщение
2. постоянна, 6-7 десятичных разрядов.
Сама формулировка "floating point" говорит о том что точка "плавает", т.е. дробная часть всегда зависит от целой, тип float в современных ПК имеет размер 32 бита в которые помещается мантисса и экспонента, и вот эта самая экспонента и "разделяет" мантиссу на целую и дробную части. Исходя из этого можно легко понять что дробная часть зависит от целой.

Добавлено через 1 минуту
Цитата Сообщение от Cend Посмотреть сообщение
И насчет точности я не понял. vua72, ваш ответ противоречит ответу lazybiz
Верь мне. У меня больше опыта.
2
Cend
2 / 2 / 4
Регистрация: 25.02.2013
Сообщений: 114
23.06.2013, 15:31  [ТС] #7
Цитата Сообщение от lazybiz Посмотреть сообщение
Верь мне. У меня больше опыта.

Остался вопрос про максимальное значение целой части
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 15:32 #8
Цитата Сообщение от Cend Посмотреть сообщение
lazybiz, пробовал вручную инкрементировать, у меня выводится чушь, значение уходит за пределы uint32_t, не знаю почему...
Кого инкрементировать? Куда инкрементировать?
0
Cend
2 / 2 / 4
Регистрация: 25.02.2013
Сообщений: 114
23.06.2013, 15:38  [ТС] #9
У меня выводит:
340282346638528859811704183484516925440
Максимальное значение целого 32-битного числа 4294967296
0
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 15:40 #10
@Cend, все верно у тебя выводит. Почитай про представление вещественных чисел в ПК.
0
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 15:42 #11
Цитата Сообщение от Cend Посмотреть сообщение
У меня выводит:
это совсем не значит, что вы можете хранить все целые числа в диапазоне от 0 до этого числа, здесь все не так, как с целыми числами
1
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 15:44 #12
Вкратце: число = мантисса * 10X, например: 1 * 1010 = 10000000000. Вещественному числу необходимо хранить в себе 1 и 10 (степень), а они легко помещаются в 32 бита.
1
Thinker
Эксперт С++
4232 / 2206 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 15:56 #13
вроде максимальное целое число в типе float
http://www.cyberforum.ru/cgi-bin/latex.cgi?3.402823466... *10^{38}
но от 0 до этого числа очень много целых чисел, которые float хранить не может по определению

Добавлено через 3 минуты
вроде его то вы и получили
0
vua72
417 / 417 / 166
Регистрация: 28.11.2010
Сообщений: 1,183
Завершенные тесты: 1
25.06.2013, 13:49 #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
не говори так никому больше
ну ладно, 7 десятичных разрядов, точнее 7.2 десятичных разрядов
Верь мне. У меня больше опыта.
Точность ну никак не зависит от целой части, а определяется форматом хранения, т.в. для 32 разрядного флоата, эта точность и составляет 7 десятичных разрядов.
lazybiz, пробовал вручную инкрементировать, у меня выводится чушь, значение уходит за пределы uint32_t, не знаю почему...
Сообщение от vua72
1. float не содержит целых чисел.
Ну как не содержит? Код C++
1 float a = 26.0;


Вот a содержит целое число 26. Код C++
1 float a = 26.11;


a содержит 26 целых, 11 сотых.
И всётаки, какова максимальная величина целой части, которую можно поместить во float?
И насчет точности я не понял. vua72, ваш ответ противоречит ответу lazybiz
это целая часть числа, а не целое число, float a = 26.0 - скорее будет представлено как 25.9999999.

И вообще стоило бы уточнить о чем идет речь, если об относительной погрешности представления числа, то она одинакова. Если речь идет о точности - погрешности конкретных вычислений, то там есть много факторов, влияющих на них.
Я думаю опыт тут ни причем.
0
25.06.2013, 13:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 13:49
Привет! Вот еще темы с решениями:

Преобразование типа char в тип float
При считывании из файла чисел (каждое число расположено на новой строке, целая...

Изменить тип массива с int на float
Какие строки необходимо исправить, чтобы изменить тип массива? #include...

Тип - матрица, состоящяя из float'ов 4x4
Как правильно объявить такой тип??

тип float и вывод остатка через a % b
Можно ли вывести остаток таким способом, если тип всех переменных FLOAT. ...


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

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

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