Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
ВнизВнутреннее представление формата Extended Найти похожие ветки
← →
wasabi (2004-07-01 17:09) [0]Кто-нибудь знает описание субж.?
Благодарю за внимание,
Василий
← →
begin...end © (2004-07-01 17:14) [1]http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=374 ?
← →
Iconka © (2004-07-01 17:15) [2]Трудно посмотреть в хелпе???
Extended 3.6 x 10^–4951 .. 1.1 x 10^4932 Size of byte-10
← →
Iconka © (2004-07-01 17:24) [3]To begin...end
Информация интересная...
← →
begin...end © (2004-07-01 17:29) [4]
> [3] Iconka © (01.07.04 17:24)
Да, я несколько лет назад (когда молодой ещё был :) всё никак не мог понять, почему не завершается такой цикл:
var
I: Real;
begin
I := 0;
repeat
I := I + 0.1
until I = 0.3;
end;
Тогда эта статья мне здорово помогла. Ну и, конечно, сайт мастаков :)
← →
Igorek © (2004-07-01 17:51) [5]
> begin...end © (01.07.04 17:29) [4]
Что бы там не писали в статье, цикл должен завершаться. Т.е. число должно представляться точно. А оно, зараза после первого добавления на самом деле хранит 0.100000000000006. Ну и потом по ходу идут неточности то в большую то в меньшую сторону.
---
Статью распечатал - обязательно прочитаю.
← →
Amoeba © (2004-07-01 17:53) [6]
> Что бы там не писали в статье, цикл должен завершаться.
> Т.е. число должно представляться точно.
Чушь!
← →
begin...end © (2004-07-01 18:00) [7]Там фишка в том, что не каждое десятичное число может быть абсолютно точно представлено в виде двоичного.
Например, следующий цикл завершится без проблем:var
I: Real;
begin
I := 0;
repeat
I := I + 0.5
until I = 10;
end.
← →
Юрий Зотов © (2004-07-01 18:09) [8]> Igorek © (01.07.04 17:51) [5]
> Что бы там не писали в статье, цикл должен завершаться. Т.е.
> число должно представляться точно.
> Статью распечатал - обязательно прочитаю.
Не логичнее было бы поступить наоборот - СНАЧАЛА прочитать и понять, а уж ПОТОМ говорить о том, что должно и чего не должно быть?
← →
Igorek © (2004-07-01 19:11) [9]
> Юрий Зотов © (01.07.04 18:09) [8]
> Не логичнее было бы поступить наоборот - СНАЧАЛА прочитать
> и понять, а уж ПОТОМ говорить о том, что должно и чего не
> должно быть?
У каждого своя логика. :-)))
Мне напр. и без статьи непонятно, почему проблемы перевода/представления из двоичной системы в десятеричную должны вылазить в такие проблемы для юзера. Взялись реализовывать десятичное число с плавающей точкой - будьте любезны релизовать так, что-бы не было ошибок округления в таких элементарных примерах.
Впрочем я могу ошибаться. И если Вас устроит, то в скором времени прочитаю и постараюсь понять статью. Потом выскажу свое мнение. Но сомневаюсь что оно изменится. $-)
← →
Тимохов © (2004-07-01 19:12) [10]
> Igorek © (01.07.04 19:11) [9]
помолчите
вам сейчас lmd пришьют
(правильно сделают, замечу)
← →
begin...end © (2004-07-01 19:13) [11]Понеслось...
← →
Тимохов © (2004-07-01 19:13) [12]
> проблемы для юзера
если вы юзер - что вы тут делаете.
это форум программистов :)))
← →
Anatoly Podgoretsky © (2004-07-01 19:17) [13]Igorek © (01.07.04 19:11) [9]
Ты про неправильные дроби что ни буд слышал, это не программирование, а метематика.
1/3 * 3 никогда не будет равно 1
А вот
1 3
- * -
3 1
будет, а здесь тоже самое выражение, только дробь не десятичная.
← →
default © (2004-07-01 19:20) [14]Igorek © (01.07.04 19:11) [9]
попробуйте перевести десят-ое число 0.7 в двоичное(
и придёте к бесконечной рациональной двоичной дроби
← →
Тимохов © (2004-07-01 19:21) [15]эх, жать орешник не обновляется.
← →
Igorek © (2004-07-01 20:39) [16][10-12, 15] - ignored
Представим тип SimpleReal для представления числа от 0 до 1. Машинное представление - два бита. Понятно, что два бита дадут возможность представить только 4 разных числа.
Пусть преобразование из десятичной дроби в двоичную происходит так:
[0-0.25) - 00
[0.25-0.5) - 01
[0.5-0.75) - 10
[0.75-1) - 11
Теперь пусть такой код:
var
sr: SimpleReal;
begin
sr := 0.3;
В памяти оно сохранит как 01.
Теперь прочитаем значение sr:
var
r: Real;
begin
r := sr;
r должно принять какое-то значение в диапазоне [0.25-0.5)
Пусть это будет 0.25 (допустим мы сами реализовали SimpleReal).
Имеем потерю точности вследствие:
1) невозможности представить некоторое десятичное число в двоичной форме без потери точности
2) округления при преобразовании назад в десятичное число
Вы наверно такую вещь имели ввиду, когда писали [10-15]?
← →
Глеб © (2004-07-02 02:42) [17]
> эх, жать орешник не обновляется.
← →
Igorek © (2004-07-02 10:16) [18]Прочитал статью. В своем мнении только утвердился. Впрочем сомневаюсь, что здесь оно будет кому-то интересно. Здесь в моде "LMD", "в орешник" и другие недалекие выражения. Ламерством за версту тхнет.
← →
Iconka © (2004-07-02 10:19) [19]Что такое LMD?
← →
hexone (2004-07-02 10:23) [20]
> Что такое LMD?
Компоненты такие
← →
Iconka © (2004-07-02 10:24) [21]Знаю. А в контексте "вам сейчас lmd пришьют"?
← →
Тимохов © (2004-07-02 10:24) [22]
> Igorek © (02.07.04 10:16) [18]
если вам нужен точный, тип, где можно сравнивать равенством, то пользуйтесь например типом TDecimal. Данный тип имеет всего 28 знаков и 10 (точных) знаков после запятой. Этот тип не описан в дельфи - в модуле activex описан только прототип - запись схожая с tvardata.
Операции также не работают в дельфи - их надо импортировать из библиотеки oleaut32.dll, например так
function VarDecAdd(var aDec1: TDecimal; var aDec2: TDecimal;
out aDecResult: TDecimal): HResult;
stdcall; external "oleaut32.dll" name "VarDecAdd";
Теоретически можете создать complex вариант - и туда его запихать, т.е. пользоваться +, - и т.д., а не функциями. Я уже 3 гда функциями пользуюсь - не грущу.
ЗЫ.
А про extended - чессо слово помолчали бы.
← →
Тимохов © (2004-07-02 10:27) [23]
> Iconka © (02.07.04 10:24) [21]
когда говороришь ерунду и еще упорствуешь в ереси - короме как ламер сказать что-нить сложно.
> Igorek © (01.07.04 20:39) [16]
А еще, коллега, вы врун, т.к. статью не читали.
:)))
← →
Sandman25 © (2004-07-02 10:31) [24][23] Тимохов © (02.07.04 10:27)
Точнее, либо врун (если не читал), либо дурак (если читал).
← →
Anatoly Podgoretsky © (2004-07-02 10:33) [25]Iconka © (02.07.04 10:24) [21]
Это щначит, что кто ни будь вышлет ему компоненты LMD, раз просит.
← →
Igorek © (2004-07-02 12:47) [26]Удалено модератором
← →
Sandman25 © (2004-07-02 12:50) [27][26] Igorek © (02.07.04 12:47)
Вы свое мнение уже высказали :) вот тут [18] Igorek © (02.07.04 10:16)
"Прочитал статью. В своем мнении только утвердился"
← →
Тимохов © (2004-07-02 12:50) [28]Удалено модератором
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.033 c