![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Внутреннее представление формата Extended [D6]
wasabi © (2004-07-01 17:09:00)Кто-нибудь знает описание субж.?
Благодарю за внимание,
Василий
Тимохов (2004-07-02 12:50:00) [1]Удалено модератором
Sandman25 (2004-07-02 12:50:00) [2][26] Igorek © (02.07.04 12:47)
Вы свое мнение уже высказали :) вот тут [18] Igorek © (02.07.04 10:16)
"Прочитал статью. В своем мнении только утвердился"
Igorek (2004-07-02 12:47:00) [3]Удалено модератором
Anatoly Podgoretsky (2004-07-02 10:33:00) [4]Iconka © (02.07.04 10:24) [21]
Это щначит, что кто ни будь вышлет ему компоненты LMD, раз просит.
Sandman25 (2004-07-02 10:31:00) [5][23] Тимохов © (02.07.04 10:27)
Точнее, либо врун (если не читал), либо дурак (если читал).
Тимохов (2004-07-02 10:27:00) [6]
> Iconka © (02.07.04 10:24) [21]
когда говороришь ерунду и еще упорствуешь в ереси - короме как ламер сказать что-нить сложно.
> Igorek © (01.07.04 20:39) [16]
А еще, коллега, вы врун, т.к. статью не читали.
:)))
Тимохов (2004-07-02 10:24:00) [7]
> 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 - чессо слово помолчали бы.
Iconka (2004-07-02 10:24:00) [8]Знаю. А в контексте "вам сейчас lmd пришьют"?
hexone (2004-07-02 10:23:00) [9]
> Что такое LMD?
Компоненты такие
Iconka (2004-07-02 10:19:00) [10]Что такое LMD?
Igorek (2004-07-02 10:16:00) [11]Прочитал статью. В своем мнении только утвердился. Впрочем сомневаюсь, что здесь оно будет кому-то интересно. Здесь в моде "LMD", "в орешник" и другие недалекие выражения. Ламерством за версту тхнет.
Глеб (2004-07-02 02:42:00) [12]
> эх, жать орешник не обновляется.
Igorek (2004-07-01 20:39:00) [13][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-01 19:21:00) [14]эх, жать орешник не обновляется.
default (2004-07-01 19:20:00) [15]Igorek © (01.07.04 19:11) [9]
попробуйте перевести десят-ое число 0.7 в двоичное(
и придёте к бесконечной рациональной двоичной дроби
Anatoly Podgoretsky (2004-07-01 19:17:00) [16]Igorek © (01.07.04 19:11) [9]
Ты про неправильные дроби что ни буд слышал, это не программирование, а метематика.
1/3 * 3 никогда не будет равно 1
А вот
1 3
- * -
3 1
будет, а здесь тоже самое выражение, только дробь не десятичная.
Тимохов (2004-07-01 19:13:00) [17]
> проблемы для юзера
если вы юзер - что вы тут делаете.
это форум программистов :)))
begin...end (2004-07-01 19:13:00) [18]Понеслось...
Тимохов (2004-07-01 19:12:00) [19]
> Igorek © (01.07.04 19:11) [9]
помолчите
вам сейчас lmd пришьют
(правильно сделают, замечу)
Igorek (2004-07-01 19:11:00) [20]
> Юрий Зотов © (01.07.04 18:09) [8]
> Не логичнее было бы поступить наоборот - СНАЧАЛА прочитать
> и понять, а уж ПОТОМ говорить о том, что должно и чего не
> должно быть?
У каждого своя логика. :-)))
Мне напр. и без статьи непонятно, почему проблемы перевода/представления из двоичной системы в десятеричную должны вылазить в такие проблемы для юзера. Взялись реализовывать десятичное число с плавающей точкой - будьте любезны релизовать так, что-бы не было ошибок округления в таких элементарных примерах.
Впрочем я могу ошибаться. И если Вас устроит, то в скором времени прочитаю и постараюсь понять статью. Потом выскажу свое мнение. Но сомневаюсь что оно изменится. $-)