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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Cend
2 / 2 / 0
Регистрация: 25.02.2013
Сообщений: 100
23.06.2013, 14:44     Тип данных float #1
1) Какое масимальное целое может содержать float?
2) Точность дробной части у float постоянна, или зафисит от целой части?
Буду благодарен за прямые ответы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 14:56     Тип данных float #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 Посмотреть сообщение
или зафисит от целой части?
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
23.06.2013, 15:08     Тип данных float #3
1. float не содержит целых чисел
2. постоянна, 6-7 десятичных разрядов.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
23.06.2013, 15:22     Тип данных float #4
Цитата Сообщение от vua72 Посмотреть сообщение
2. постоянна, 6-7 десятичных разрядов.
не говори так никому больше
Cend
2 / 2 / 0
Регистрация: 25.02.2013
Сообщений: 100
23.06.2013, 15:22  [ТС]     Тип данных float #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
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,016
Записей в блоге: 10
Завершенные тесты: 1
23.06.2013, 15:27     Тип данных float #6
Цитата Сообщение от vua72 Посмотреть сообщение
2. постоянна, 6-7 десятичных разрядов.
Сама формулировка "floating point" говорит о том что точка "плавает", т.е. дробная часть всегда зависит от целой, тип float в современных ПК имеет размер 32 бита в которые помещается мантисса и экспонента, и вот эта самая экспонента и "разделяет" мантиссу на целую и дробную части. Исходя из этого можно легко понять что дробная часть зависит от целой.

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

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

Добавлено через 3 минуты
вроде его то вы и получили
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2013, 13:49     Тип данных float
Еще ссылки по теме:

C++ Почему при объявлении переменных тип float выдает ошибку
тип float и вывод остатка через a % b C++
опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing C++

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

Или воспользуйтесь поиском по форуму:
vua72
410 / 410 / 83
Регистрация: 28.11.2010
Сообщений: 1,158
25.06.2013, 13:49     Тип данных float #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.

И вообще стоило бы уточнить о чем идет речь, если об относительной погрешности представления числа, то она одинакова. Если речь идет о точности - погрешности конкретных вычислений, то там есть много факторов, влияющих на них.
Я думаю опыт тут ни причем.
Yandex
Объявления
25.06.2013, 13:49     Тип данных float
Ответ Создать тему
Опции темы

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