Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> float или double ? Нужен ли float.. 
:(
    Опции темы
volatile
Дата 14.7.2013, 01:14 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(hoz @  14.7.2013,  00:37 Найти цитируемый пост)
Тока вот что значит запись 1.17549e-38 не понимаю.. 

user posted image 

---
Ребята хорош грузить новичка. Вы конечно все очень правы, особенно длинная цитата из стандарта
Это напомнило мне старый анедот.
 smile 
  Как-то летели Холмс с Ватсоном на воздушном шаре. И заснули. Просыпаются  над
какой-то незнакомой местностью, видят  -  внизу  какой-то  мужик  коров  пасет.
Снизились они и спрашивают мужика:
- Скажите, сэр, где мы находимся?
- (хорошенько подумав) На воздушном шаре.
- Спасибо, сэр! - и поднялись вверх. Холмс задумчиво говорит:
- Интересная местность, Ватсон! Программист пасет коров!
- Но, Холмс, с чего вы взяли, что он программист?
- Элементарно, Ватсон! Во-первых, он ответил, хорошенько подумав.
  Во-вторых, его ответ - Абсолютно точен.
  Ну и в третьих - Абсолютно бесполезен!



PM MAIL   Вверх
mes
Дата 14.7.2013, 01:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(hoz @  14.7.2013,  00:12 Найти цитируемый пост)
Как это понимать?

почитать про числа с плаваюшей запятой


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 14.7.2013, 05:48 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



> Получается, что sizeof возвращает размер его операнда, а range согласно коду диапазоны макс. и мин. Но size=4, а у range размеры огромных пределах

ИМХО для начала нужно разобраться хотя бы с целыми числами. Там такая же фигня. При size равном 1 байт range от 0 до 255.
И ещё, смысл double не в хранении больших чисел, а в большой точности при хранении чисел.
Кстати, на некоторых процессорах double вообще нет. Есть только float. Например, на некоторых GPU.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
mes
Дата 14.7.2013, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(borisbn @  14.7.2013,  04:48 Найти цитируемый пост)
а в большой точности при хранении чисел.

имелось в виду "в большей" ?


--------------------
PM MAIL WWW   Вверх
borisbn
Дата 15.7.2013, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



> имелось в виду "в большей" ? 

Ну... Я там обыгрывал "большие числа" vs "большая точность", но и так можно  smile 


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
Wuffur
Дата 15.7.2013, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 22.7.2007

Репутация: нет
Всего: нет



1.17549*10^-38=1,9999 9259*2^-127=1, 1111 1111 1111 1111 1000 011*2^-127. Причем старшая 1 в мантиссу не пишется. Так?

Это сообщение отредактировал(а) Wuffur - 15.7.2013, 09:31
PM MAIL ICQ   Вверх
Alexeis
Дата 15.7.2013, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 4
Всего: 459



  Я думаю, что флоаты в первую очередь нужны для скорости. Одно дело вычислять ~7 знаков акртангенса для флоата, и совсем другое 14 знаков для дабла. Оно конечно зависит от реализации в процах, но по опыту даблы будут раз в 10 дольше вычисляться если не хуже. Поэтому графику считают флоатами, тем более что флоаты лучше оптимизируются SSE .  Я бы сказал, что скорее даблы не нужны чем флоаты, но они безусловно нужны для научных вычислений где требуется сохранение точности.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Wuffur
Дата 15.7.2013, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 22.7.2007

Репутация: нет
Всего: нет



Зависит от задачи - когда для скорости, а когда, чтобы вместились в память. Если вы CUDA программист, то там производительность сравнима,
здесь: http://www.nvidia.com/object/tesla-servers.html пиковая производительность на кеплере. А здесь просто про floating point на CUDA^
https://developer.nvidia.com/sites/default/...ating-Point.pdf


K20
Peak double precision floating point performance    1.17 Tflops
Peak single precision floating point performance    3.52 Tflops

PU Computing Applications    Reservoir simulation, CAE (structural analysis), Molecular dynamics, Numerical analytics, Computational visualization (ray tracing)

Вполне возможно, что если вам нужно отрисовывать сложную сцену, то без double не обойдешься.



Это сообщение отредактировал(а) Wuffur - 15.7.2013, 09:55
PM MAIL ICQ   Вверх
akizelokro
  Дата 15.7.2013, 10:11 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


Профиль
Группа: Участник
Сообщений: 761
Регистрация: 30.7.2007

Репутация: 1
Всего: 5



Вопрос исторический и поэтому немного риторический.
Надо смотреть, как появлялись float и double. Смотреть аллюзии с fortran'ом, потому что первоначально он в основном использовался для научных расчётов, a C рассматривался как системный язык (точность нецелочисленных вычислений в fortran'е была побольше. PS. Как сейчас, не знаю.)
А дальше уже идут вопросы переносимости кода. Стандарт языка, кажется, на то и стандарт языка, чтобы в нём не рассматривалась трендовая текущая ситуация с hardware и software, а важна универсальность. 
Даже до сих пор есть DJGPP, который компилит код под 386 процессором и, пусть и единичные, но у людей возникают задачи что-то написать и откомпилить, работающее даже на 286 процах. Не говоря про многообразие UNIX'оидных тачек.

Добавлено через 8 минут
Код

1.17549e-38


В большом ряде научных расчётов такая точность может оказаться недостаточной. Так что не грузите новичка, а расскажите ему так, как оно есть на самом деле. "Как к такой жизни пришли" и почему оно до сих пор так, а не по другому.

Это сообщение отредактировал(а) akizelokro - 15.7.2013, 10:11


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
Wuffur
Дата 15.7.2013, 11:43 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 22.7.2007

Репутация: нет
Всего: нет



akizelokro
А вот если я ему скажу, что на два это число делить можно, а на большее целое будет ноль - это будет ответ на вопрос?
Может он сам додумает?
С вашим ответом, что в DJGPP всё устроено как в 286 и 386 вряд ли понятнее станет. Я вот знаю, что сопроцессор для вычислений с плавающей
точкой появился только на 386 DX-2 и там ни о каких double речи не шло. Просто Doom 2 быстрее стал идти.
PM MAIL ICQ   Вверх
hoz
Дата 15.7.2013, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Мда. Пользуюсь уже год как числами с запятой, а ничего про них не знал до этого момента  smile 
В принципе, вы было сказано верно, double больше float по сайзу в байтах в 2 раза, но long double относительно double уже не в 2.. хотя значения его в диапазоне на порядок больше предшественника, как в нормализованном виде, так и в денормализованном виде.
Есть пару моментов.
1. Ведь переменная у которой мантисса с порядком имеет значение 1,2·10−38 или 1,2·10−38 это уже 38 запятых в ту или иную сторону. Зачем больше? Как программист прикидывает всё-таки необходимость использования того или иного типа? Лично я не представляю, где можно использовать такие числа... с такой точностью. А выше и подавно. Очень интересно понять.
2. Тут сказано, что:
Цитата

число с плавающей точкой имеет фиксированную относительную точность и изменяющуюся абсолютную

Это как понять?
3. Ещё там есть такое:
Цитата

Знака мантиссы (указывающего на отрицательность или положительность числа)

Разве может быть мантисса отрицательной? Ведь, если так, то вид:
Код

0,1·-e3

Будет правильным?

Это сообщение отредактировал(а) hoz - 15.7.2013, 15:10
PM MAIL   Вверх
feodorv
Дата 15.7.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(hoz @  15.7.2013,  14:56 Найти цитируемый пост)
это уже 38 запятых в ту или иную сторону

Нет))) Это значит, что порядок числа может быть от -38 до +38, но вот число значащих цифр - всего 7-8 (у double - 15-16). 


Цитата(hoz @  15.7.2013,  14:56 Найти цитируемый пост)
Тут сказано, что:

А точнее?


Цитата(hoz @  15.7.2013,  14:56 Найти цитируемый пост)
Разве может быть мантисса отрицательной?

Может: -1.0...


Цитата(hoz @  15.7.2013,  14:56 Найти цитируемый пост)
Будет правильным? 

Нет. -0,1·e3


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
hoz
Дата 15.7.2013, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Цитата(feodorv @  15.7.2013,  14:42 Найти цитируемый пост)
Нет))) Это значит, что порядок числа может быть от -38 до +38, но вот число значащих цифр - всего 7-8 (у double - 15-16).

Хм. Я так понял, Вы из той таблицы взяли? Для long double согласно той таблицы будет от 19-20 знаков..
Выходит, что нас интересует именно точность! Теперь понял.
Цитата(feodorv @  15.7.2013,  14:42 Найти цитируемый пост)
А точнее?

Я уже исправил в своём посте, вот что я имел ввиду:
Цитата

число с плавающей точкой имеет фиксированную относительную точность и изменяющуюся абсолютную

Читал, читал.. но не очень понятно, что они имеют ввиду под терминами фиксированной и относительной точности.
Цитата(feodorv @  15.7.2013,  14:42 Найти цитируемый пост)
Нет. -0,1·e3 

Хотя да. Верно.
PM MAIL   Вверх
feodorv
Дата 15.7.2013, 16:34 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(hoz @  15.7.2013,  16:17 Найти цитируемый пост)
Я так понял, Вы из той таблицы взяли?

Нет, это довольно известные факты))) 


Цитата(hoz @  15.7.2013,  16:17 Найти цитируемый пост)
Выходит, что нас интересует именно точность!

Да! Можете взглянуть на строение float smile 


Цитата(hoz @  15.7.2013,  16:17 Найти цитируемый пост)
вот что я имел ввиду

Ну вот всё тоже самое))) Число бит под мантиссу фиксировано, значит, Вы можете, к примеру, различать числа x=1.0eN и y=1.000001eN (где N - какой-то порядок); а 1.0eN и 1.0000001eN уже не различаются (не хватает разрядности мантиссы и 0.0000001 отбрасывается). Поэтому (максимально достижимая) относительная точность 
Код

|y-x|/x

не зависит от порядка числа и зависит только от разрядности мантиссы.

В то же абсолютная точность 
Код

|y-x|

просто совпадает с x*1e-6 и изменяется вместе с x (и его порядком).

Это сообщение отредактировал(а) feodorv - 15.7.2013, 16:46


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
hoz
Дата 16.7.2013, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 27.6.2013

Репутация: нет
Всего: нет



Цитата(feodorv @  15.7.2013,  16:34 Найти цитируемый пост)
Да! Можете взглянуть на строение float  

Ничего там непонятно вообще, если честно. Думал что всё понятно, а как начал там читать, так затуманило. Наверное лучше оставить "как есть", ведь различия в применении типов переменных я выяснил, а дальше уже дебри.. Который пугают smile  А изучать я нацелен серьёзно, поэтому лучше не перегрузить себя, видимо.
Цитата(feodorv @  15.7.2013,  16:34 Найти цитируемый пост)
Вы можете, к примеру, различать числа x=1.0eN и y=1.000001eN (где N - какой-то порядок); а 1.0eN и 1.0000001eN уже не различаются (не хватает разрядности мантиссы и 0.0000001 отбрасывается)

Во втором варианте, Вы имеете в виду, что там N-не порядок мантиссы, а множитель что-ли?
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1033 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.