· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› число 0.0007f

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июл 25, 2003 21:37:35

Кто знает как представить такое число в АСМЕ??? Хотябы идеи!!


Дата: Июл 25, 2003 21:46:58

Идеи можно позаимствовать у компилятора :)
float a = 0.0007;
float b = a + 0.1; // например
. . .
Дизассемблировать, либо в отладчике глянуть...

ЗЫ: FPU округляет это до нуля или в чём собственно проблема с этим числом?


Дата: Авг 3, 2003 22:16:50

Quantum
В честь чего это число FPU округлять до нуля?

Это число в виде короткого вещественного:
3A378034h

В виде длинного вещественного:
3F46F0068DB8BAC7h


Дата: Авг 3, 2003 22:42:27

.DATA
REAL4 0.0007f

Но, не все вещественные числа представимы в формате IEEE
Вот для начала некоторый текст (англиский).

_784143670__floats.pdf


Дата: Авг 3, 2003 23:13:09 · Поправил: Quantum

2 Fixer:
В честь чего это число FPU округлять до нуля?
Это было не утверждение с моей стороны, а вопрос. Просто показалось странно, что emergenter спрашивал именно про 0.0007f, а не 0.1f, например...


Дата: Авг 4, 2003 23:07:52

Quantum
Извиняюсь, моя ошибка, недопонял. Может быть emergenter хотел узнать о форматах представления чисел с плавающей точкой?

xzazet
Насчет представимости чисел. На самом деле в статье идет речь о потере точности, если скажем заменить все типы в примерах с float на double все будет Ok.


Дата: Авг 4, 2003 23:50:58

Fixer

Очевидно, Вы опять чего-то "недопоняли".

Потеря точности есть следствие проблемы представимости чисел в формате IEEE.

Может у Вас компьютер поддерживает floats размером в бесконечность битов? Тогда, извините. Я к такой технике доступа не имею. :(


Информация к размышлению (знаменитый пример):

0.1 =десятичное в бинарное=> .0001100110011... и так до бесконечности


Дата: Авг 5, 2003 01:00:36

Даже при большой разрядности двоичной мантиссы не каждое десятичное может быть представлено.
xzazet тут прав.
Оно имеет конечное представление только если его можно
представить как X* 2^(-n) Где X и N целые числа.
0.2 = 1\5 Тоже никак не представится.
Во всех этих случаях приходится округлять.


Дата: Авг 5, 2003 14:17:48

xzazet
Очевидно, Вы опять чего-то "недопоняли".
Не надо грубостей
Потеря точности есть следствие проблемы представимости чисел в формате IEEE.
А вам известен формат представления чисел в котором не возникает потеря точности (разумеется для всего ряда вещесвенных чисел)? Так при чем же здесь IEEE?


Дата: Авг 5, 2003 14:41:02

Если бинарное представление имеется ввиду, то мне тоже неизвестно. Да и никакой другой. Если у числа нет делителя степени радикса, то оно конечно непредставимо.
Нет проблем например в троичной показать 1\3 = 0.1
В десятичной же получим периодическую дробь - нет степени радикса (или делителей радикса) в десятичной системе которые смогли бы остатка разделить 1/3.
В троичной - пожалуйста. Но в троичной другое не представить опять же.
Согласен с Fixer здесь.

Хотя чисто теоретичеки для определённого континиума мы можем придумать некий формат с упакованными битовыми полями где радикс выставлялся бы произвольно (разумеется тоже в определённых пределах) в одном из бинарных полей.
Но работать с таким форматом было бы ужасно неудобно.
И единственная ценность такого формата могла бы найти применение где нибудь в иследовательских программах о теории чисел.


Дата: Авг 5, 2003 18:37:56

The Svin
Хотя чисто теоретичеки для определённого континиума мы можем придумать некий формат с упакованными битовыми полями где радикс выставлялся бы произвольно
Интересно, но как потом с такими числами проводить арифметические операции? Если перед операцией приводить их к общему радиксу, всё равно может произойти потеря точности...


Дата: Авг 5, 2003 19:22:31

Fixer

BCD. Конечно, не для _всего_ множества вещественных чисел, но по-моему получше будет. Любая точность числа записанного в десятичном формате на бумажке - представима в BCD.


[off]
То, что Вы посчитали "грубостью", такой не являлось/не подразумевалось. Маленькая аналогия. В среде афро-американцев употребление слова "nigger" считается здоровым стебом. Брат может назвать брата, постебаться над ним. И никаких обид. Это есть определенное свойство принадлежности к касте. В среде белых "nigger" - ужасное ругательство и страшное табу.

Мораль: извиняюсь, если принял Вас не за того.


Дата: Авг 5, 2003 19:29:45

Интересно, но как потом с такими числами проводить арифметические операции? Если перед операцией приводить их к общему радиксу, всё равно может произойти потеря точности...
Конечно, но при определённых величинах точность может быть предельной. Это надолго разговор. До диссертации можно раздуть :)


Дата: Авг 5, 2003 20:14:39

The Svin
До диссертации можно раздуть :)
Ой, нехорошее это слово -- диссертация :)
Если серьёзно, то где-то я уже встречал диссертацию по этой теме...


Дата: Авг 5, 2003 22:54:43 · Поправил: Fixer

xzazet
Привет брат :). Но ведь десятичная система ничем не лучше любой другой и в случае рациональных дробей (которые чаще всего и возникают на практике при расчетах) не удастся избежать потери точности.

С другой стороны наилучшим основанием системы счисления (в смысле представления числа с наибольшей точностью) будет являться система, основание которой можно разложить на наибольшее количесво простых чисел т.е.

Rbest = 2*3*5*7*11*13*...

Поэтому, в этом смысле, десятичная система в чем то лучше двоичной (10 = 2*5). Но ты должен согласиться, что в силу того, что естественной системой счисления для компьютера является двоичная, то двоично-десятичное число не блещет компактностью представления.

И скорее всего (не проверял, просто на глазок) абсолютная погрешность представления в двоичном виде, в самом худшем случае, не превышает 0.01%.

ЗЫ Найти бы систему счисления в которой бы число ПИ представлялось в виде конечного ряда цифр.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078