|
|
| Посл.отвђт | Сообщен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%. ЗЫ Найти бы систему счисления в которой бы число ПИ представлялось в виде конечного ряда цифр. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078 |