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

Поиск:

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


Эксперт
****


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

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



Цитата(Wuffur @  21.7.2013,  18:55 Найти цитируемый пост)
В том что если умножить 10^n это то же самое что 2^m, которое и указывает порядок. 

Ну да, надо было начинать с начала (с формата чисел), а не с конца... Хотел как лучше)))


Цитата(Wuffur @  21.7.2013,  18:55 Найти цитируемый пост)
И машинное эпсилон надо умножать на 2^-8

В каком смысле?


Чешу репу))) Вот тут всё нормально: http://codepad.org/6J68wSlx
Откомпилированное на MS VC 6.0 (какой уж под рукой))) даёт:
Цитата

a = 1, a2 = 1.00000000000005
sizeof(a) = 4, sizeof(a2) = 4
f = 1, f2 = 1.00000000000005
sizeof(f) = 4, sizeof(f2) = 4

Это результат зверской оптимизации у Microsoft?


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


Новичок



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

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



Цитата

Это результат зверской оптимизации у Microsoft? 

Ничего не знаю. smile
Мой gcc:
Цитата

ivan@tesla:~> gcc --version
gcc (SUSE Linux) 4.4.1 [gcc-4_4-branch revision 150839]
Copyright © 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Даёт:
Цитата

./float
a = 1, a2 = 1
sizeof(a) = 4, sizeof(a2) = 4
f = 1, f2 = 1
sizeof(f) = 4, sizeof(f2) = 4
ivan@tesla:~> ./float
a = 1, a2 = 1
sizeof(a) = 4, sizeof(a2) = 4
f = 1, f2 = 1
sizeof(f) = 4, sizeof(f2) = 4


Наверное msvc 6.0 слишком умный %f - float, %d - double.

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


Шустрый
*


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

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



 В общем-то, Благодарю всех за обсуждение! Буду дальше изучать язык. К этому вопросу вернусь позже, дабы полностью прояснить ситуацию. Пока что уже я и так понял разницу, и много того чего не знал, капаясь в вики. Но чтоб понять целостную картину, видимо нужно больше времени.
PM MAIL   Вверх
akizelokro
Дата 23.7.2013, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


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

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



Целостную картину можно было понять уже на первой странице.
Просто гуроны (от слова "гуру") решили поблистать. И это достаточно понятное и нормальное побуждение. Мало какой эксперт не воспользуется ситуацией.

А есть жёсткая прагматика. Если вопрос достаточно сложен (много информации), то, когда перестаёшь работать с ним постоянно, мелкие детали вымываются из памяти. И при возврате к ним всё равно снова приходится садиться за справочное пособие.

Это сообщение отредактировал(а) akizelokro - 23.7.2013, 16:27


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
feodorv
Дата 23.7.2013, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



akizelokro, слишком много букв, да? smile 

Цитата(akizelokro @  23.7.2013,  17:16 Найти цитируемый пост)
И при возврате к ним всё равно снова приходится садиться за справочное пособие.

Повторение - мать учения)))

Цитата(akizelokro @  23.7.2013,  17:16 Найти цитируемый пост)
Просто гуроны (от слова "гуру") решили поблистать.

Ой, да ладно. Блеска здесь не наблюдается. Но вот попробуйте доходчиво ответить на вопрос:
Цитата(hoz @  17.7.2013,  23:31 Найти цитируемый пост)
Например, берём числа:
123245.84,
457235.1,
235,6882347
У каждого из них будет фиксированная точность и изменяющаяся? Я сколько не читаю про это, что-то не въезжаю. 

А я на Вас со стороны посмотрю smile 



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


Крокодил
**


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

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



Цитата(feodorv @  23.7.2013,  16:39 Найти цитируемый пост)
А я на Вас со стороны посмотрю smile 


Вы бы лучше на меня в 90ых посмотрели, когда я смотрел на флаги форматирования функции printf., работая с float и double раз в сто лет в обед. И  рассуждал так..
у int флаг i, у лонгов - l, у char - с, у unsigned - u, значит, у float - f, у double - d (это на память). Самое интересное, что f для float срабатывало, и потом я уже с полной уверенностью писал для double - d! (и черта с два интернета было под рукой, чтобы посмотреть, как оно надо).
После выдачи с d неожиданного результата глаза собирались в кучу и озирали строку вывода)

Кстати, для флага f тип по умолчанию double.

Код

Например, берём числа:
123245.84,
457235.1,
235,6882347
У каждого из них будет фиксированная точность и изменяющаяся? Я сколько не читаю про это, что-то не въезжаю. 


Ну, я смотрю на это философски. В моё время была хорошая математическая подготовка, сейчас больше, имхо, люди приходят с веб-программирования, там больше уклон уже не на математическую базу. Закономерный этап.

Это сообщение отредактировал(а) akizelokro - 23.7.2013, 17:34


--------------------
a = a + b; b = a - b; a = a - b;
PM MAIL   Вверх
feodorv
Дата 23.7.2013, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(akizelokro @  23.7.2013,  18:29 Найти цитируемый пост)
Кстати, для флага f тип по умолчанию double.

Это особенность всех функций с переменным числом аргументов: float расширяется до double, и всё тут, живи как хочешь)))

Цитата(akizelokro @  23.7.2013,  18:29 Найти цитируемый пост)
у float - f, у double - d

Ну да, в принципе могли бы и так сделать, оставив %d (от digital) для double, а %i для целых (от integer). Но история пошла другим путём...


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


Эксперт
****


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

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



Цитата(feodorv @ 23.7.2013,  16:39)
Но вот попробуйте доходчиво ответить на вопрос:
Цитата(hoz @  17.7.2013,  23:31 Найти цитируемый пост)
Например, берём числа:
123245.84,
457235.1,
235,6882347
У каждого из них будет фиксированная точность и изменяющаяся? Я сколько не читаю про это, что-то не въезжаю. 


В данном случае нужно отсылать к учебнику за 4-5 класс средней школы.
Человек не понимает разницы между "абсолютно" и "относительно".
(не важно о чем речь, о погрешности, или о прибавке к зарплате...)
А он именно этого не понимает.
PM MAIL   Вверх
hoz
Дата 25.7.2013, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(volatile @  23.7.2013,  23:57 Найти цитируемый пост)
В данном случае нужно отсылать к учебнику за 4-5 класс средней школы.Человек не понимает разницы между "абсолютно" и "относительно".(не важно о чем речь, о погрешности, или о прибавке к зарплате...)А он именно этого не понимает.

Вообще нет, не этого. Я не понял в том момент когда писал, что для чисел определённого типа применимы разные точности:
Цитата

Для чисел с фиксированной точкой

  • постоянная абсолютная погрешность
  • переменная относительная погрешность


Для чисел с плавающей запятой

  • переменная абсолютная погрешность
  • постоянная относительная погрешность


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

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

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

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

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


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

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


 




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


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

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