Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Почему срабатывает условие   Найти похожие ветки 

 
NaZGHUL   (2003-06-10 11:43) [0]

Ребята помогите:
...
var a,b:real;
i:integer;
...
for i:=1 to ... do
if A[i] > B then ...;
...

У меня почему то срабатывает условие при A=B, если А и В - дробное число, причем если А и В целые числа и А=В не срабатывает что делать...............Help!!!


 
Palladin ©   (2003-06-10 11:46) [1]

замени real на currency и не мучайся


 
NaZGHUL   (2003-06-10 11:55) [2]

Все конечно гораздо сложнее - это сильно оочень сильно упрощенная модель, переделывать весь код влом - дело принципа: почему такая фигня происходит!!!!! Я пишу экспертную систему для машиностроения и дороги любые 0,001 мм. Прикольно другое условие срабатывает если 10,94 > 10,939999999999999!!!!


 
Sandman25 ©   (2003-06-10 11:59) [3]

Переведите все в условные единицы измерения. То есть 1ед. = 0.001мм


 
NaZGHUL   (2003-06-10 12:18) [4]

Ну поему такая фигня происходит то!!!!!???????????? 8-(


 
Катерина ©   (2003-06-10 12:22) [5]

const eps = 0.001;
...
if abs(a-b) < eps then
... // A = B
else if a > b then
... // A > B
else
... // A < B


 
Катерина ©   (2003-06-10 12:38) [6]

Для значений вещественных типов (кроме Comp, Currency), т.е. имеющих дробную часть нефиксированной длины, A = B практически никогда не будет истинным, поскольку таким образом (real и т.д.)определяются числа с некоторой точностью. И соответственно сравнение этих чисел надобно производить с необходимой точностью.


 
icWasya ©   (2003-06-10 13:03) [7]

из справки
Type Range Significant digits Size in bytes
Real48 2.9 x 10^–39 .. 1.7 x 10^38 11–12 6
Single 1.5 x 10^–45 .. 3.4 x 10^38 7–8 4
Double 5.0 x 10^–324 .. 1.7 x 10^308 15–16 8
Extended 3.6 x 10^–4951 .. 1.1 x 10^4932 19–20 10
Comp –2^63+1 .. 2^63 –1 19–20 8
Currency –922337203685477.5808.. 922337203685477.5807 19–20 8
The generic type Real, in its current implementation, is equivalent to Double.


разница между 10,94 и 10,939999999999999 ~ 1e-15 , что на пределе точности


 
Юрий Зотов ©   (2003-06-10 13:21) [8]

> NaZGHUL
Правильные и подробные ответы на все вопросы Вы найдете здесь:
http://www.delphikingdom.ru/helloworld/reals.htm


 
NaZGHUL   (2003-06-10 13:22) [9]

Сенки всем!!! :)))


 
Song ©   (2003-06-10 15:17) [10]

IF FloatToStr(A)=FloatToStr(B) then...

:)


 
АСВГ   (2003-06-10 16:19) [11]

Народ а как насчет переопределения оператора равно и сравнение через него?
Ну это если нужна определенная точность.



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

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
14-84574
duby
2003-06-08 15:13
2003.06.26
Статьи о потоках


8-84462
sherlock
2003-03-15 18:06
2003.06.26
Чтение MP3 файлов.


8-84449
Dunkan
2003-03-12 11:04
2003.06.26
как создать новый Wav файл и записать в него???


14-84705
Maxim Pshevlotsky
2003-06-05 11:30
2003.06.26
Что лучше POP3 или IMAP


7-84794
Демонов Е.В.
2003-04-18 09:15
2003.06.26
Дата Соэдания каталога