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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.75
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

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

05.12.2013, 17:19. Просмотров 2544. Ответов 9
Метки нет (Все метки)

Считал, что float - с фиксированной точкой, а double - с плавающей. То, что у float была точность для меня было доказательством, ведь, если точка плавающая, теоретически, можно под мантиссу оставить 1бит, а все остальное отдать на порядок. Да и то, что граф. API повсеместно использует float и редко double тоже мне как бы намекало, что вместо того, чтобы возиться с гуляющей запятой, лучше сложить с фиксированной и не париться -> больше производительность -> счастливее геймер.

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

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

Дробные числа - C++
Всем привет. Подскажите - почему то значения ver2 и ver3 считает, как целые числа. Почему? #include <iostream> using namespace...

дробные числа - C++
Здраствуйте, народ! Есть глупый вопрос: как сделать проверку для ввода только дробных чисел? Заранее благодарен

Дробные числа - C++
Дpoбныe числa oкpyглить дo 2 знaкoв пoслe зaпятoй как это можно сделать. к примеру число 23.333 его нужно округлить до 2 знаков или...

Дробные числа - C++
Задание: Напишите функцию main(), которая получает случайные дробные числа от пользова- теля, сохраняет их в массиве типа fraction,...

Дробные числа, С++ - C++
Уважаемые знатоки, требуется ваша помощь. Передо мной стоит задача посчитать приблизительную сумму ряда, путем вычисления частичных сумм....

Дробные числа - C++
пишу в Builder C++ нужно дробное число отображать в едите получается примерно так: double x; x=0.55; String y; y=...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,677
05.12.2013, 20:27 #2
ru.wikipedia.org/wiki/Число_с_фиксированной_запятой
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
05.12.2013, 20:33  [ТС] #3
daslex, именно после прочтения оной я и задумался над переводом слова float и в конец запутался
0
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
05.12.2013, 21:45 #4
Цитата Сообщение от nexen Посмотреть сообщение
что значит фиксированная
Хороший пример - бухгалтерия. Можно считать в копейках (хотя на выходе нужны рубли). Сложение и вычитание проходит с песней. Как и умножение на обычный int. Но когда приходится умножать копейки на копейки, нужно уже результат разделить на 100. Но я не могу вообразить себе никакой реальной задачи, где бы эти "квадратные копейки" имели бы смысл. Может быть что-то из области статистики, всякие дисперсии и СКО?
ИМХО, последний популярный язык, который поддерживал понятие "фиксированной точки (запятой)" был PL/1
А float действительно плавает. Но не глубоко.
Короче - фиксированная точка - просто переход к другой системе измерения. Были мили - стали дюймы. И никаких других секретов там быть не должно.
1
daslex
1271 / 516 / 106
Регистрация: 02.08.2011
Сообщений: 2,677
05.12.2013, 21:51 #5
Цитата Сообщение от nexen Посмотреть сообщение
Так что же всё-таки что и почему тогда два первых моих примера, что раньше были для меня доказательством, выполняются в обратном порядке (т.е., для числа с плавающей точкой)? Или, может, я неправильно понимаю, что значит фиксированная и плавающая точки?
вы сами спрашиваете и сами себе отвечаете.

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

я не могу быть уверен в своем ответе, но думаю это так.
0
Байт
Эксперт C
16061 / 10330 / 1540
Регистрация: 24.12.2010
Сообщений: 19,459
05.12.2013, 22:07 #6
Цитата Сообщение от Байт Посмотреть сообщение
где бы эти "квадратные копейки" имели бы смысл.
Хотя вот. Вполне реально умножать копейки на килограммы (представленные в виде граммов!) и ПЛ-1 как бы брал эту задачу на себя. Я в свое время вдосталь намучился с этим, и предпочитаю контролировать ситуацию сам.
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.12.2013, 07:30  [ТС] #7
Байт, daslex, ну предположим, что я числа эти правильно понимал с их плавающей и фиксированной запятой. Но те два примера, что я привел в шапке темы, почему же них все забили? :'(
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
06.12.2013, 09:47 #8
В С++ с фиксированной точкой представлены только целые числа
(можете считать, что точка стоит после целой части, а дробная равна нулю).
А float и double - Числа с плавающей точкой, у которых целая часть равна нулю,
а фактическое положение запятой определяется показателем степени.
0
daslex
06.12.2013, 11:03
  #9

Не по теме:

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

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

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

0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
06.12.2013, 17:32  [ТС] #10
zss, daslex, в таком случае чем long float отличается от double?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2013, 17:32
Привет! Вот еще темы с ответами:

Оператор while и дробные числа? - C++
Учусь по специальности машиностроение. Работаю над программой для расчета асинхронного двигателя, но возникла проблема: я в циклах while...

Целые и дробные числа - C++
на языке С как делить и умножать целое число и дробное. например 2 * 3,5 . и 2/3,5. интересует именно запись в обьявлении...

Не учитывает дробные числа - C++
Помогите исправить программу, чтобы она учитывала ввод дробных чисел... #include <cstdio> #include <iostream> using namespace std;...

Дробные числа в одномерном массиве - C++
Доброе время суток, подскажите как с оператором sran считаются дробные числа? За ранее благодарен Найти число с самой большой...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.12.2013, 17:32
Ответ Создать тему
Опции темы

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