-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204
|
|
1 | |
Диапазон значений float14.01.2018, 18:11. Показов 21141. Ответов 12
Метки нет (Все метки)
Добавлено через 5 минут Из этой же цитаты следует, что тип float не предназначен для работы с отрицательными числами. Это правда?
0
|
14.01.2018, 18:11 | |
Ответы с готовыми решениями:
12
Ограничить диапазон вводимых значений для float в программе Почему диапазон значений у типа float больше, чем у типа int, если они оба занимают 4 байта? Разработать функцию, в которую передается массив типа float, что возвращает сумму элементов массива в диапазон опять ошибка.на этот раз cannot convert `float (*)(float)' to `float' in argument passing |
192 / 128 / 52
Регистрация: 19.01.2010
Сообщений: 518
|
|
14.01.2018, 18:14 | 2 |
из-за ограниченного количества бит мантиссы и порядка, изменение флотА происходит с точностью до 7 знаков. Т.е шаг с точностью 10е-7
0
|
20 / 20 / 6
Регистрация: 16.11.2017
Сообщений: 87
|
|
14.01.2018, 18:19 | 4 |
Отрицательные числа во float - без проблем.
число представляется 2 кусками - значащие цифры (мантисса) и степень (экспонента) пусть будет 10-ки, на которую умножается мантисса. Так вот, точность 7 знаков - это мантисса. их можно умножать на 10 в 37, т.е. "двигать" вправо-влево от точки. А сама точность при этом остается 7 знаков. Очень грубо и примерно написал, но принцип думаю понятен.
0
|
-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204
|
||||||
14.01.2018, 18:22 [ТС] | 5 | |||||
Я изготовил примерчик:
То есть гарантируется точность только трех цифр после запятой и округляется четвертая, верно? Evg, ну, а какой реальный диапазон значений?
0
|
20 / 20 / 6
Регистрация: 16.11.2017
Сообщений: 87
|
|
14.01.2018, 18:27 | 6 |
Программа выводит с округлением, используйте setprecision, чтобы установить сколько знаков вы хотите вывести.
0
|
-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204
|
|
14.01.2018, 18:31 [ТС] | 7 |
0
|
14.01.2018, 18:51 | 8 |
Сообщение было отмечено MrGluck как решение
Решение
Что напечатается - зависит от того, с какой точностью попросят напечатать, поскольку числа в машине хранятся в двоичном представлении и в десятичное в основном переводятся неточно. Какая настройка по умолчанию, я не помню
https://ideone.com/GVJfvs Диапазон такой, как и указано, только числа в этом диапазоне находятся неравномерно Почитай тут, может какая-то ясность появится: https://www.cyberforum.ru/blogs/18334/blog88.html Добавлено через 8 минут float занимает 4 байта, т.е. 32 бита. А в 32 бита можно записать 2^32 (~4 млрд) различных комбинаций. Т.е. столько различных значений можно хранить в 32-битном float'е. Половина этих значений соответствует положительным числам, половина отрицательным (т.е. примерно по 2 млрд каждых). 2 млрд например, положительных, различных значений размазаны НЕравномерно по диапазону от 10^-38 до 10^+38. Маленькие (по модулю) числа представлены с большим абсолютным значением точности, большие числа - с меньшей точностью Если построить логарифмическую шкалу, то все возможные значения, который хранит float, будут расположены равномерно. Т.е. равномерность соблюдается в логарифмическом масштабе
1
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
14.01.2018, 19:19 | 9 |
Не совсем так. Целые числа можно хранить вне зависимости от представления, и своё значение они сохранят. Тут дело в том, что степень числа хранится для 2ки. А преобразовать 2^n к числу 10^m без ошибок невозможно (для знающих математику - из за того что является тансцендентным числом). И данная ошибка домножается на мантису, потому и "число с плавающей точкой" оказывается то больше то меньше присвоенного в десятичном виде.
Добавлено через 4 минуты А ошибки в точности при делении будут и у целых чисел тоже. А в случае переполнения даже для сложения/вычитания/умножения.
0
|
-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204
|
|
14.01.2018, 19:49 [ТС] | 10 |
TRam_, значит, потеря точности появляется в момент вывода на экран? А если над числами выполнять арифметические действия, то они будут выполнены в двоичной системе, и результат этих действий сохранится в двоичном представлении?
0
|
14.01.2018, 20:25 | 11 |
Да, если число точно в десятичной системе не представляется
Да. Но в процессе вычислений так же возможны потери точности, которые происходят из-за того, что float может хранить только набор из 4 млрд чисел, а потому число, являющееся результатом операции, может и не попасть в это множество из 4 млрд чисел
0
|
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
14.01.2018, 22:33 | 12 |
В момент преобразования буфера ввода (с нажатыми тобой для ввода числа клавишами) в записываемое в переменную значение.
1
|
Evg
|
14.01.2018, 23:54
Диапазон значений float
#13
|
0
|
14.01.2018, 23:54 | |
14.01.2018, 23:54 | |
Помогаю со студенческими работами здесь
13
Диапазон значений Диапазон значений в switch Диапазон значений указателей Выход за диапазон значений Диапазон значений массива. Как проверить диапазон значений? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |