Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1088685167
Cincinnut
2004-07-01 16:32
2004.07.18
Как не надо заниматься вымогательством


1-1089039778
serg128
2004-07-05 19:02
2004.07.18
Как получить код клавиши на клавиатуре?


1-1089116928
BBoost
2004-07-06 16:28
2004.07.18
Спец. символы


9-1080413591
Shopot
2004-03-27 21:53
2004.07.18
Игра puzzle.


3-1087989291
quQuev
2004-06-23 15:14
2004.07.18
Не получается считать из BLOB поля больше 32Kb





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский