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

Дробные числа - плавающая и фиксированная точки - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 17:19     Дробные числа - плавающая и фиксированная точки #1
Считал, что float - с фиксированной точкой, а double - с плавающей. То, что у float была точность для меня было доказательством, ведь, если точка плавающая, теоретически, можно под мантиссу оставить 1бит, а все остальное отдать на порядок. Да и то, что граф. API повсеместно использует float и редко double тоже мне как бы намекало, что вместо того, чтобы возиться с гуляющей запятой, лучше сложить с фиксированной и не париться -> больше производительность -> счастливее геймер.

Однако, вдруг, мозг сказал :"стоп",- и перевел float с английского на русский: "плавать; всплывать; держаться на поверхности воды" - тут меня накрыло.

Так что же всё-таки что и почему тогда два первых моих примера, что раньше были для меня доказательством, выполняются в обратном порядке (т.е., для числа с плавающей точкой)? Или, может, я неправильно понимаю, что значит фиксированная и плавающая точки?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.12.2013, 17:19     Дробные числа - плавающая и фиксированная точки
Посмотрите здесь:

целые и дробные числа C++
C++ Дробные числа, С++
Как кодираются дробные числа в пакетах? C++
C++ дробные числа
Дробные числа C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
05.12.2013, 20:27     Дробные числа - плавающая и фиксированная точки #2
ru.wikipedia.org/wiki/Число_с_фиксированной_запятой
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 20:33  [ТС]     Дробные числа - плавающая и фиксированная точки #3
daslex, именно после прочтения оной я и задумался над переводом слова float и в конец запутался
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
05.12.2013, 21:45     Дробные числа - плавающая и фиксированная точки #4
Цитата Сообщение от nexen Посмотреть сообщение
что значит фиксированная
Хороший пример - бухгалтерия. Можно считать в копейках (хотя на выходе нужны рубли). Сложение и вычитание проходит с песней. Как и умножение на обычный int. Но когда приходится умножать копейки на копейки, нужно уже результат разделить на 100. Но я не могу вообразить себе никакой реальной задачи, где бы эти "квадратные копейки" имели бы смысл. Может быть что-то из области статистики, всякие дисперсии и СКО?
ИМХО, последний популярный язык, который поддерживал понятие "фиксированной точки (запятой)" был PL/1
А float действительно плавает. Но не глубоко.
Короче - фиксированная точка - просто переход к другой системе измерения. Были мили - стали дюймы. И никаких других секретов там быть не должно.
daslex
1084 / 494 / 101
Регистрация: 02.08.2011
Сообщений: 2,408
05.12.2013, 21:51     Дробные числа - плавающая и фиксированная точки #5
Цитата Сообщение от nexen Посмотреть сообщение
Так что же всё-таки что и почему тогда два первых моих примера, что раньше были для меня доказательством, выполняются в обратном порядке (т.е., для числа с плавающей точкой)? Или, может, я неправильно понимаю, что значит фиксированная и плавающая точки?
вы сами спрашиваете и сами себе отвечаете.

Число с плавающей точкой (запятой) — форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей точкой имеет фиксированную относительную точность и изменяющуюся абсолютную
Происхождение названия - Название «плавающая запятая» происходит от того, что запятая в позиционном представлении числа (десятичная запятая, или, для компьютеров, двоичная запятая — далее по тексту просто запятая) может быть помещена где угодно относительно цифр в строке (источник ru.wikipedia.org/wiki/Число_с_плавающей_запятой)
=================
Моими словами это как-то так: если взять число 123456, то в течении времени запятая может занимать любую позицию между цифрами, оставляя за собой несколько цифр, количество которых может разниться
=====================
Если смотреть на число с фиксированной точкой, то точность задается один раз и независимо от обстоятельств, после запятой всегда остается фиксированное число цифр.
======================
И, наверное, рассматривать все надо немного с другого ракурса. Не сточки зрения, что тип - это число с плавающей или фиксированной точкой, а с точки зрения, что тип float (double) может быть числом или с плавающей или с фиксированной точкой. И если подумать, то float хорошо подходит, но это не значит, что double не может выступать в этой роли.

я не могу быть уверен в своем ответе, но думаю это так.
Байт
 Аватар для Байт
14004 / 8835 / 1234
Регистрация: 24.12.2010
Сообщений: 16,014
05.12.2013, 22:07     Дробные числа - плавающая и фиксированная точки #6
Цитата Сообщение от Байт Посмотреть сообщение
где бы эти "квадратные копейки" имели бы смысл.
Хотя вот. Вполне реально умножать копейки на килограммы (представленные в виде граммов!) и ПЛ-1 как бы брал эту задачу на себя. Я в свое время вдосталь намучился с этим, и предпочитаю контролировать ситуацию сам.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.12.2013, 07:30  [ТС]     Дробные числа - плавающая и фиксированная точки #7
Байт, daslex, ну предположим, что я числа эти правильно понимал с их плавающей и фиксированной запятой. Но те два примера, что я привел в шапке темы, почему же них все забили? :'(
zss
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
06.12.2013, 09:47     Дробные числа - плавающая и фиксированная точки #8
В С++ с фиксированной точкой представлены только целые числа
(можете считать, что точка стоит после целой части, а дробная равна нулю).
А float и double - Числа с плавающей точкой, у которых целая часть равна нулю,
а фактическое положение запятой определяется показателем степени.
daslex
06.12.2013, 11:03
  #9

Не по теме:

я не понимаю, что значит: "у float была точность", double как и float ограничена (т.е. обладает определенной точностью)
я не понимаю, что значит: "

Цитата Сообщение от nexen Посмотреть сообщение
что вместо того, чтобы возиться с гуляющей запятой, лучше сложить с фиксированной и не париться
в графическом мире 3d без double очень быстро нарастают ошибки, в физических вычислениях где требуются вычисления очень малых с высокой точностью без double очень быстро нарастают ошибки. Есть много ситуаций в которых float неэффективно и наоборот.
я не понимаю, что значит: "да и то что граф"

поэтому игнорировал ваши примеры в шапке.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 17:32     Дробные числа - плавающая и фиксированная точки
Еще ссылки по теме:

C++ Дробные числа
Не учитывает дробные числа C++
Дробные числа C++

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

Или воспользуйтесь поиском по форуму:
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.12.2013, 17:32  [ТС]     Дробные числа - плавающая и фиксированная точки #10
zss, daslex, в таком случае чем long float отличается от double?
Yandex
Объявления
06.12.2013, 17:32     Дробные числа - плавающая и фиксированная точки
Ответ Создать тему
Опции темы

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