![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
слушайте а как вам такой способ:
т.к float - 6 байтов, то первые 2 байта наверное идут под ехпоненту, остальные 4 под мантиссу. перевести число в 2-ичный еквивалент, сравнить сначала експоненты числа, если они равны, то сравнить их мантиссы посредством двоичной операции И. При случае когда числа равны, оба числа останутся без изменений но, в противном случае можно смотреть порядок следования байтов и смотреть какое из чисел всё же больше. Это только теоретическое предположение. -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| comcon1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 11.6.2005 Где: Москва ДАС-МГУ Репутация: 12 Всего: 17 |
в смысле с конца по битикам?? и чем это лучше, чем просто вычитать и сравнивать??
|
|||
|
||||
| ManiaK |
|
|||
![]() Homo Sapience ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1145 Регистрация: 3.8.2004 Где: ИУ5-93 Репутация: 5 Всего: 29 |
Для определения, что больше, а что - меньше, круче чем вычитанием для общего случая никак не сделаешь. По крайней мере, с банальной математической точки зрения я не вижу альтернативы...
|
|||
|
||||
| B2_Russia |
|
|||
![]() В доску свой :) ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 3.7.2003 Где: Тверь Репутация: нет Всего: 1 |
ваще проблемы нету - вся эта хрень
на первом занянии по ЧМам излагается.. float - маздай!!! юзайте double ! Это сообщение отредактировал(а) B2_Russia - 27.6.2005, 15:25 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
В каком это компиляторе размер float составляет 6 байтов? До сих пор была уверена, что размер float == 4 байта, по крайней мере в VC и в Borland C. Может, я от жизни отстала? -------------------- ... |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Ну насчет float Earnest права, sizeof(float) = 4.
А вот sizeof(double)=8. sizeof(long double)=80([offtop]бах, это случаем не variant из vb?[/offtop]) А вот про 48 битов упоминается в SUS2(SUS3 под рукой нет, но там кажется то же самое есть), например здесь:
Однако хочется сказать,что наши родимые FPU оперируют только 32 битными, 64 битными и 80 битными типами. Если кому-то интересно про float'ы и с чем их едят, то читаем IEEE 754, IEEE 854, RFC 1832... Но там про 48 тоже молчок. Это сообщение отредактировал(а) Mayk - 27.6.2005, 16:58 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Дрон |
|
||||||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Ну посмешили, ребята!!!
sizeof(long double) = 10
А разницы? Точность-то всё равно ограничена. gepard
Чем тебе это не нравится? Это сообщение отредактировал(а) Дрон - 27.6.2005, 17:11 -------------------- Да. Именно так. |
||||||
|
|||||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Дрон
Тьфу. Имелись в виду биты -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| pablo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 12.2.2005 Где: Вильнюс, Литва Репутация: 4 Всего: 6 |
Ошибся я чуток, точнее просто забыл, но это не главное. Я просто хотел предложить вам способ сравнение чисел с плавающей точкой и мне интерено ваше мнение.
Добавлено @ 00:04 Кстати при вычитании, не отбрасывается ли точность т.е если сравнивать такие два числа 0.5 и 0.50001 не покажутся ли они одинаковые ? -------------------- Первый блин всегда похож на сферу, иногда бывает и куб. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Так в том то и вся соль, чтоб они были одинаковыми. Чтоб не показались одинаковыми надо использовать встроенный bool operator == (float, float). Есть еще такой прикол что одно и то же число можно записать несколькими способами. Например 0,1 = 1 * 10^(-1) = 10 * 10^(-2). (разумеется во флотах комп оперирует 2оичной арифметикой) Это сообщение отредактировал(а) Mayk - 28.6.2005, 09:22 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Adil' |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 26.8.2004 Где: Питер Репутация: 6 Всего: 15 |
Комп всегда хранит плавающие числа в нормализованном виде - если, как в этом примере, в десятичном виде - то как 1 * 10^(-1) -------------------- Удачи |
|||
|
||||
| yaja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 30.3.2005 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
возможно я неправ, но одно и тоже число(вещественное, типа float, double...) может иметь одно и тоже значение, но разно представление в памяти (разную последовательность бит), а встроенный bool operator == (float, float) сравнивает побитово...
поэтому если нужно сравнить два чила на равенство, то пишут fabs(x - y) < EPSILON эту запись встречал во всех смотренных мною проектах (не просто маленьких программах, а в проектах |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |