Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Вниз

обьясните что за глюк??   Найти похожие ветки 

 
Fl@sh ©   (2006-07-02 20:28) [0]

r:real
stop := 128;
r := 0.04;

while (frac(r)<>0.0) and (stop>0) do
begin
result := result + trunc(r*16);
r := frac(r*16);
dec(stop);

end;

результаты циклов..
result = 0.04
0.64
0.24
0.0839999 {почему??? Должно же быть 0,84 = 0,24*16}
как исправить??
Самое главное через несколько итераций результат вообще стает 0!!!
Подскажите пожалуйста


 
Ketmar ©   (2006-07-02 20:36) [1]

учить матчасть. на тему представления чисел с плавающей запятой. и точности этого представления.

вкратце: исправить путём избавления от таких чисел. только целые.


 
Fl@sh ©   (2006-07-02 20:37) [2]

а  мне надо такие!! я серьезно!
как избавиться чтоб результат не ставал 0,08399999 а был 0,84


 
[wl] ©   (2006-07-02 20:46) [3]

можно перейти в fixed point - числам, как в игре doom (как и предлагает Ketmar), тем более, что у тебя не требуется высокая точность после запятой.


 
Ketmar ©   (2006-07-02 20:51) [4]

>Fl@sh ©   (02.07.06 20:37) [2]
чтобы "не ставал", надо язык учить и словари читать. после этого перечитывать ответы и медитировать до осознания себя всего лишь пылинкой в великом колесе Кармы.


 
fl@sh ©   (2006-07-02 20:55) [5]

Блин, ощущение как будто здесь только пинать умеют!
Просил же помощи


 
Ketmar ©   (2006-07-02 21:11) [6]

блин, ощущение такое, что сюда только малолетние неграмотные наглецы приходят. учились же в школе!


 
vidiv ©   (2006-07-03 03:58) [7]


> 0,08399999 а был 0,84

0,0839999(9) а был 0,84
из курса алгебры известно что это одно и то же число :)


 
Джо ©   (2006-07-03 04:15) [8]

> [7] vidiv ©   (03.07.06 03:58)
> 0,0839999(9) а был 0,84
> из курса алгебры известно что это одно и то же число :)

Наверное, мне какую-то другую алгебру преподавали :)


 
ЮЮ ©   (2006-07-03 04:33) [9]


> 0,0839999(9) а был 0,84

вместо real используй Double


 
vidiv ©   (2006-07-03 04:50) [10]


> Джо ©   (03.07.06 04:15) [8]

Упс... ошибочка... имел ввиду 0.84 и 0.839(9), а не 0.0839(9).


 
icWasya ©   (2006-07-03 09:48) [11]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
Ketmar ©   (2006-07-03 10:34) [12]

>ЮЮ ©   (03.07.06 04:33) [9]
да хоть Extended. всё равно точность теряется.


 
For kaif   (2006-07-03 10:46) [13]

Упс... ошибочка... имел ввиду 0.84 и 0.839(9), а не 0.0839(9).

Это не ошибка. 0.839(9)=0.839999999(9).


 
jack128 ©   (2006-07-03 10:52) [14]

ЮЮ ©   (03.07.06 4:33) [9]
вместо real используй Double

по умолчанию - это одно и тоже.  Да и не по умолчанию - принципиальных различий нету..


 
Ketmar ©   (2006-07-03 10:53) [15]

>For kaif   (03.07.06 10:46) [13]
%-)
0.8 и 0.08 %-))


 
ЮЮ ©   (2006-07-03 11:02) [16]

>да хоть Extended. всё равно точность теряется.
На Extended будет точно
0,84
Правда дальше вылезет 0,0399999999999991 :)

Самое главное через несколько итераций результат вообще стает 0!!!
Не результат, а дробная составляющая. И что здесь странного, что сумма нскольких чисел оказалось целым?


 
Amoeba ©   (2006-07-03 11:27) [17]

Автору вопроса читать эту статью (повторяю ссылку из[11]) до полного просветления:

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374


 
Еж ©   (2006-07-03 12:55) [18]

if r=0.0839999 then r:= 0.084 !!!


 
SergP ©   (2006-07-03 21:53) [19]

> вместо real используй Double


Лучше currency. ИМХО


 
evvcom ©   (2006-07-04 08:40) [20]

> [18] Еж ©   (03.07.06 12:55)

Ё-мАё! Просветил ты нас, а мы не знали! Оказывается всё так просто! Такое элегантное решение! :-)))))


 
Desdechado ©   (2006-07-04 11:29) [21]

Еж ©   (03.07.06 12:55) [18]
Сравнение чисел с плавающей точкой на точное равенство фактически всегда даст False.
А вот с фиксированной точкой - другое дело.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.012 c
2-1152195494
_Алексей
2006-07-06 18:18
2006.07.30
Прозрачность окон


2-1152262440
Diksa
2006-07-07 12:54
2006.07.30
TreeView


3-1148743113
Sword
2006-05-27 19:18
2006.07.30
Fast report и два запроса


2-1152169894
Elfebet
2006-07-06 11:11
2006.07.30
Когда мышка покидает форму фокус передается предыдущему окну.


2-1152236593
SerJaNT
2006-07-07 05:43
2006.07.30
Подскажите запрос





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский